الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

AVL tree

بدأه حنين ، في 11 ديسمبر 2011 · 5 رد · 2,217 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

لدي استفسار عن هذا السطر

BufferedReader insert = new BufferedReader(new FileReader(args[k]));

برنامجي صحيح ولكن لم أفهم القصد بـ args[k]

طلب آخر

أريد دالة تعمل على حذف نود من الشجرة AVL

وهذا كودها ويحتوي على عدة دوال

AvlTree.java

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package javaapplication189;
/**
 *
 * @author Win 7
 */
public class Tree1 {
   Node root;

 public Tree1()
    {

    }

 public Tree1(Node root)
    { this.root = root; }

 public Node rotateRight()
    { return rotateRight(root); }

 public Node rotateRight(Node n)
    {
    Node q = root;
    Node p = q.left;
    Node c = q.right;
    Node a = p.left;
    Node b = p.right;
    q = new Node(q.data, b, c) {};
    p = new Node(p.data, a, q);

    return p;}

  public Node rotateLeft()
  {  return rotateLeft(root); }

 public Node rotateLeft(Node n)
  {
    Node q =root;
    Node p = q.right; 
    Node c = q.left;
    Node a = p.left;
    Node b = p.right;
    q = new Node(q.data,c,a);
    p = new Node(p.data,q,b);
    return p;}

 public Node insert(int n)
 {
    if(root == null)
    { root = new Node(n) {};}

    else
    { root = insert(root, new Node(n));}

    //System.out.println(n);
    if(checkAVL(root) == 0){
   //System.out.println(checkAVL(root));
    return root;}

    else if(checkAVL(root) == 1){
    //System.out.println(checkAVL(root));
    root = rotateLeft(root);
    return root; }

    else {
    //System.out.println(checkAVL(root));
    root = rotateRight(root);
    return root;}

}

    public Node insert(Node n, Node m)
    {
     if(n == null)
    { return m; }

    if (m.data > n.data) // insert right
    {return new Node(n.data,n.left,insert(n.right, m));}

    else // insert left
    {return new Node(n.data,insert(n.left, m),n.right);}
    }

    public boolean search(int n)
    {
    Node clone = root;

    while(clone != null)
    {
    if(clone.data == n)
    {//System.out.println(clone.data);
    return true; }

    else if(clone.data < n)
    {clone = clone.right;}

    else
    {clone = clone.left; }
    }//end loop
    return false; //throw new Exception("The value doesn't exist");
    }

    public int depth()
    {return depth(root);}

   public int depth(Node n)
   {
    if(n == null)
    {return 0;}

    else
    {return Math.max(depth(n.left),depth(n.right)) + 1;}
   }

   public int checkAVL()
  { return checkAVL(root);}

  public int checkAVL(Node n)//The purpose is to check whether the node is balanced or not after an insertion
    {
    if(depth(n.right) - depth(n.left) >= 2) return 1;

    else if(depth(n.left) - depth(n.right) >= 2) return -1;

    else return 0;
    }

   public int minimum(Node n){

    Node current,last = null;
    current = n;

    while(current != null){
    last = current;
    current = current.left;}

    return last.data; }

  public int minimum()
 { return minimum(root);}

  public int maximum(Node n){
    Node current,last = null;
    current = root;

    while(current != null){
    last = current;
    current = current.right;}

    return last.data;}

  public int maximum()
  { return maximum(root); }

   //public String toString()
  //{ return root.toString(); }   
}

Node.java

package javaapplication189;

/**
* AVL Tree Implementation
* _Istanbul Bilgi University - Computer Science Department
* Author: Sinan Bakr , sinanbakir at gmail.com
*/
public class Node
{
    int data;
    Node left;
    Node right;

    public Node(){}

    public Node(int data)
    {
        this.data = data;
        this.left = null;
        this.right = null;
    }

    public Node(int data, Node left, Node right)
    {
    this.data = data;
    this.left = left;
    this.right = right;
    }

    public static String getAsString(Node n)
    {
    if (n != null)
    { return n.toString(); }

    else//if null
    { return "N"; }
    }

    //public String toString()
    //{ return "(" + getAsString(left) + " " + data + " " + getAsString(right); }

}

أنتظر المساعده

فرج الله هم من فرَج همي

تم تعديل هذه المشاركة بواسطة حنين ، في 11 ديسمبر 2011 في 00:52

#2

UP

ياجماعة بكرة التسليم

لو فقط ألاقي جواب لهذا السطر

BufferedReader insert = new BufferedReader(new FileReader(args[k]));

كيف أقرأ من المصفوفة آرقز

أنتظر ردكم :(

#3
حنين ، كتب:

UP

ياجماعة بكرة التسليم

لو فقط ألاقي جواب لهذا السطر

BufferedReader insert = new BufferedReader(new FileReader(args[k]));

كيف أقرأ من المصفوفة آرقز

أنتظر ردكم :(

السلام عليكم

اقرا هذا

#4

السلام عليكم ..

  1. بالنسبة للكود :
    BufferedReader insert = new BufferedReader(new FileReader(args[k]));

    فهو يقوم بقراءة الملف الممرر اسمه كبارمترات للبرنامج , ثم يضع محتويات الملف (أرقام غالبا أو أحرف ) في الشجرة . و يتم تمرير البارمترات عند تشغيل البرنامج كمايلي :

    java myPackage.MyProgram d:/file1.txt d:/f2.txt

    حيث المصفوفة args تحوي هذه البارمترات بعد اسم البرنامج و هنا عددها 2 , بالنسبة لك , ثبت اسم الملف في الكود مبدئيا.. بدلا من args .. أو ضعه داخل الكود بمصفوفة مثل :

    String[] myArr = new String[]{"d:/f1.txt" , "d:/f2.txt"};

  2. دالة الحذف : الق نظرة على الرابط , و على الرابط و استخدم بحث جوجل رابط

تم تعديل هذه المشاركة بواسطة houssam11350_11350 في 12 ديسمبر 2011 في 11:08

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#5

^

houssam

جزاك الله خير عالرد

بس عندي سؤال هنا

String[] myArr = new String[]{"d:/f1.txt" , "d:/f2.txt"};

وش هي f2 و f1 .؟

وياليت إذا تقدر تحول لي كلاس Driver عشان أقدر أحدد له قيم

بدال ما تقرأ وتكتب وتحذف في ملفات

أبغاها تكتبها وتقرأها عادي .. أرسل قيمة للـشجرة وهي تضيفها للشجرة أو تحذفها من الشجرة

بإختصار أبغى أدخل لها العناصر في دالة المين

زي كذا

t.insert(2);
t.remove(4);

ونفس الشيء باقي الدوال

حاولت أثبت الjdk عشان أقدر أشتغل عالدوس بس ماقدرت :sad:

ياليت تفيدوني والله يعطيكم العافية

تم تعديل هذه المشاركة بواسطة حنين ، في 13 ديسمبر 2011 في 23:15

#6

###############

الحمد لله

تم حل البرنامج :blush:

كل اللي ردو

الله يوفقهم وييسر أمورهم

تم تعديل هذه المشاركة بواسطة حنين ، في 14 ديسمبر 2011 في 00:50

مواضيع مشابهة