Guest User

Untitled

a guest
Feb 20th, 2018
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.90 KB | None | 0 0
  1. // BSTEx : binary search tree
  2. // auteur: J.Kaldeway
  3.  
  4. package Week4opd3;
  5.  
  6.  
  7. public class BSTEx<E extends Comparable<E>>
  8. {
  9.     private BSTNodeEx<E> root_ = null;
  10.  
  11.     public BSTEx(){}
  12.    
  13.     public BSTEx(E[] a)
  14.     {
  15.         if (a == null || a.length == 0)
  16.            root_ = null;
  17.         else  
  18.            root_ = new BSTNodeEx<E>(a);
  19.     }
  20.    
  21.     public String toString()
  22.     {
  23.         if (root_ == null)
  24.            return "null-tree";
  25.         else
  26.            return root_.toString();  
  27.     }
  28.    
  29.     public BSTNodeEx<E> search(E e)
  30.     {
  31.         if (e == null || root_ == null)
  32.             return null;
  33.         else
  34.             return root_.rsearch(e);
  35.     }
  36.    
  37.     public boolean insert(E e)
  38.     {
  39.         if (e == null) return false;
  40.         if (root_ == null)
  41.         {
  42.             root_ = new BSTNodeEx<E>(e,null,null);
  43.             return true;
  44.         }
  45.         else
  46.             return root_.rinsert(e);
  47.          
  48.     }
  49.    
  50.     public boolean delete(E e)
  51.     {
  52.         if (e == null || root_ == null)
  53.             return false;
  54.         else
  55.         {
  56.             if (root_.element_.equals(e))
  57.             {
  58.                 if (root_.left_ == null)
  59.                     root_ = root_.right_;
  60.                 else if (root_.right_ == null)
  61.                     root_ = root_.left_;
  62.                 else if (root_.right_.left_ == null)
  63.                 {
  64.                     root_.element_ = root_.right_.element_;
  65.                     root_.right_ = root_.right_.right_;
  66.                 }
  67.                 else
  68.                 {
  69.                     BSTNodeEx<E> node = root_.parentMinRightTree();
  70.                     root_.element_ = node.left_.element_;
  71.                     node.left_ = node.left_.right_;                
  72.                 }
  73.                 return true;
  74.             }
  75.            
  76.             else return root_.delete(e);
  77.         }
  78.     }
  79.        
  80.     public static void main(String[] s)
  81.     {
  82.         BSTEx<Integer> /* b = new BSTEx<Integer>(new Integer[]{1,2,3});
  83.         System.out.println(b);
  84.         System.out.println("----------------");
  85.         b = new BSTEx<Integer>(new Integer[]{1,2,3,4});
  86.         System.out.println(b);
  87.         System.out.println("----------------");
  88.         b = new BSTEx<Integer>(new Integer[]{1,2,3,4,5,6,7,8,9,10});
  89.         System.out.println(b);
  90.         System.out.println("----------------");
  91. */      b = new BSTEx<Integer>(new Integer[]{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15});
  92.         System.out.println(b);
  93.         BSTNodeEx<Integer> node = b.search(new Integer(3));
  94.         if (node != null) System.out.println(node.element_);
  95.         node = b.search(new Integer(4));
  96.         if (node != null) System.out.println(node.element_);
  97.         node = b.search(new Integer(8));
  98.         if (node != null) System.out.println(node.element_);
  99.         node = b.search(new Integer(11));
  100.         if (node != null) System.out.println(node.element_);
  101.         node = b.search(new Integer(16));
  102.         if (node != null) System.out.println(node.element_);
  103.         b.insert(new Integer(17));
  104.         System.out.println(b);
  105. /*        System.out.println("----------------");
  106.         System.out .println(b.insert(new Integer(10)));
  107.         b = new BSTEx<Integer>();
  108.         for (int i = 1; i <=10; i++)
  109.             b.insert(new Integer(i));
  110.         System.out.println(b);
  111. */        System.out.println("----------------");
  112.                  
  113. //      b = new BSTEx<Integer>(null);
  114. //      System.out.println(b);
  115. //      b = new BSTEx<Integer>(new Integer[0]);
  116. //      System.out.println(b);
  117.         b.delete(new Integer(14));
  118.         System.out.println(b);
  119.         System.out.println("----------------");
  120.        
  121.         b = new BSTEx<Integer>();
  122.         b.insert(new Integer(3));
  123.         b.insert(new Integer(2));
  124.         b.insert(new Integer(10));
  125.         b.insert(new Integer(11));
  126.         b.insert(new Integer(9));
  127.         b.insert(new Integer(6));
  128.         b.insert(new Integer(7));
  129.         b.insert(new Integer(8));
  130.         System.out.println(b);
  131.         System.out.println("----------------");
  132.         b.delete(new Integer(3));
  133.         System.out.println(b);
  134.         System.out.println("----------------");
  135.     }
  136. }
Add Comment
Please, Sign In to add comment