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

خطوات الــ insearch binary tree و search binary tree

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

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

اريد منكم خطوات الــ insearch binary tree و search binary tree

باللغة الانجليزية

ومالفرق بينهم ..

وشكرررا

..

#2

ااتمنى اجد منكم الرد

وشكرا

#3

ردو الله يسعدكم :sad:

#4

insearch binary tree اول مرة اسمع فيها ..

search binary

http://www.algolist.net/Algorithms/Binary_search

تحياتي.

عفواً أحبتي انقطاعي بسبب الدراسة دعواتكم بالتوفيق..

{ لا ينال العلم مستحٍ ولا مستكبر }

#5

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

  1. الــ binary Tree هي شجرة فيها لكل عقدة ولدين اثنين على الأكثر .
    1. البحث في الأشجار الثنائية العادية , يتطلب مسح كافة العناصر , لذلك لا يتم استخدامها غالبا..
    2. الــ Binary Search Tree و اختصارا BST تحقق:
      1. هي شجرة binary (راجع التعريف في 1) .
      2. الشجرة الجزئية اليسرى تحوي العناصر ذات المفاتيح keys التي اصغر من الجذر root
      3. الشجرة الجزئية اليمنى تحوي العناصر ذات المفاتيح keys التي أكبر من الجذر root
      4. كل من الشجرة الجزئية اليسرى و اليمنى هي بدورها Binary Search Tree أي تحقق الخواص السابقة :

  • الــ binary search tree تسمى أحيانا بالــ ordered (مرتبة) أو Sorted binary tree , رابط ويكيبيديا
  • لعمل insert لعنصر في BST يجب إيجاد مكانه المناسب و كود الــ insert موجود بالرابط السابق و يوجد طريقتان واحدة عودية recursive و الثانية تكرارية iterative .
  • الــ Search .. أيضا تكراري و عودي ..و الكود موجود بالرابط السابق ..و كلفته LOG n
  • روابط في المنتدى فيها الكود : رابط1 رابط2 رابط3
  • روابط مفيدة : Tree_traversal و الــ binary Tree و
  • كود الــ Node.java هو :

    public class Node
    {
    int data;
    Node left;
    Node right;

    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;
    }

    }

  • كود الــ IterativeBST.java هو :

  • import java.util.Stack;

    public class IterativeBST
    {

    Node m_root;

    public void insertBST(int data)
    {
    if (m_root == null)
    {
    m_root = new Node(data, null, null);
    return;
    }
    Node root = m_root;
    while (root != null)
    // Not the same value twice
    if (data == root.data)
    return;
    else if (data < root.data)
    // insert left
    if (root.left == null)
    {
    root.left = new Node(data, null, null);
    return;
    } else
    root = root.left;
    else // insert right
    if (root.right == null)
    {
    root.right = new Node(data, null, null);
    return;
    } else
    root = root.right;
    }

    public Node searchBST(int key)
    {
    Node next = m_root;

    while (next != null)
    if (key == next.data)
    return next;
    else if (key < next.data)
    next = next.left;
    else
    next = next.right;


    return null;
    }

    //calls the method to do in order
    public void print_inorderBST()
    {
    inorder(m_root);
    }

    private void inorder(Node node)
    {
    //incoming node is root
    Stack<Node> nodes = new Stack<Node>();
    while (!nodes.isEmpty() || null != node)
    if (null != node)
    {
    nodes.push(node);
    node = node.left;
    } else
    {
    node = nodes.pop();
    System.out.println(node.data);
    node = node.right;
    }
    }
    }

  • كود الــ RecursiveBST.java هو :

  • public class RecursiveBST
    {

    Node m_root;

    public void insertBST(int data)
    {
    if (m_root == null)
    m_root = new Node(data, null, null);
    else
    insert(m_root, data);
    }

    private void insert(Node node, int data)
    {
    // Not the same value twice
    if (data == node.data)
    return;
    else if (data < node.data)
    if (node.left == null)
    node.left = new Node(data, null, null);
    else
    insert(node.left, data);
    else if (node.right == null)
    node.right = new Node(data, null, null);
    else
    insert(node.right, data);
    }

    public Node searchBST(int key)
    {
    return search(m_root, key);
    }

    private Node search(Node node, int key)
    {
    if (node == null)
    return null;

    if (node.data == key)
    return node;

    if (key < node.data)
    return search(node.left, key);
    else
    return search(node.right, key);
    }

    //calls the method to do in order
    public void print_inorderBST()
    {
    inorder(m_root);
    }

    // ------------------ InOrder traversal-------------------
    private void inorder(Node theRootNode)
    {
    if (theRootNode != null)
    {
    inorder(theRootNode.left);
    System.out.println(theRootNode.data + " , ");
    inorder(theRootNode.right);
    }
    }
    }

  • كود التجريب هو :

  • public class TreeTest
    {
    public static void main(String[] args)
    {
    int[] data = new int[] {20 , 3, 55, 7, 43 , 100 , 9};
    RecursiveBST recursiveBST = new RecursiveBST();
    IterativeBST iterativeBST = new IterativeBST();

    for(int i = 0 ; i < data.length ; i ++)
    {
    recursiveBST.insertBST(data);
    iterativeBST.insertBST(data);
    }

    if(recursiveBST.searchBST(43) != null)
    System.out.println("Found in recursiveBST.");

    if(iterativeBST.searchBST(43) != null)
    System.out.println("Found in iterativeBST.");

    System.out.println("recursiveBST Data :");
    recursiveBST.print_inorderBST();

    System.out.println("iterativeBST Data :");
    iterativeBST.print_inorderBST();

    }

    }

  • ملاحظة : تم تجميع المعلومات السابقة من الأنترنت و بالتالي هي تحتمل الخطأ الغير مقصود ..
  • 1

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

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

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

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

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