Advertisement
Guest User

Untitled

a guest
Jun 27th, 2017
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package project2;
  2.  
  3. import java.util.Collection;
  4. import java.util.Comparator;
  5. import java.util.Iterator;
  6.  
  7.  
  8. public class BinaryTree<E> implements Collection<E>
  9. {
  10.     Comparator<E> comp;
  11.     Node<E> head = new Node<E>(null);
  12.  
  13.     private class Node<T>
  14.     {
  15.         T content;
  16.         Node<T> left;
  17.         Node<T> right;
  18.  
  19.         public Node(T arg)
  20.         {
  21.             content = arg;
  22.         }
  23.  
  24.         boolean isEmpty()
  25.         {
  26.             return content == null;
  27.         }
  28.     };
  29.  
  30.     public BinaryTree(Comparator<E> arg)
  31.     {
  32.         comp = arg;
  33.     }
  34. @Deprecated
  35.  
  36.     public void delete(E arg)
  37.     {
  38.    
  39.     if (!contains(arg))
  40.             return;
  41.         Node<E> traverser = head;
  42.         Node<E> parentTraverser;
  43.         // search for the node
  44.         if (head.content.equals(arg))
  45.         {
  46.             head = null;
  47.            
  48.             return;
  49.         } else
  50.         {
  51.             parentTraverser = null;
  52.         }
  53.         while (true)
  54.         {
  55.             while (comp.compare(traverser.content, arg) < 0)
  56.             {
  57.                 parentTraverser = traverser;
  58.                 traverser = traverser.left;
  59.             }
  60.             while (comp.compare(traverser.content, arg) > 0)
  61.             {
  62.                 parentTraverser = traverser;
  63.                 traverser = traverser.right;
  64.             }
  65.             if (traverser.content.equals(arg))
  66.             {
  67.                 // node to be deleted is found !
  68.                 // start searching for the smalles subnode of the right tree
  69.                 if (traverser.right == null && traverser.left == null)
  70.                 {
  71.                     //traverser has no children the parent left || right should be set to zero
  72.                     if (parentTraverser.left.content.equals(arg))
  73.                     {
  74.                         parentTraverser.left = null;
  75.                         return;
  76.                     }
  77.                     if (parentTraverser.right.content.equals(arg))
  78.                     {
  79.                         parentTraverser.right = null;
  80.                         return;
  81.                     }
  82.                 }
  83.                 // if there is no right tree the continuation of the tree is in the left part
  84.                 if(traverser.right == null)
  85.                 {
  86.                     parentTraverser.left = traverser.left;
  87.                     return;
  88.                 }
  89.                 // normal situation
  90.                 // but the right tree's smalles element is the top of the right subtree
  91.                 if(traverser.right.left==null)
  92.                 {
  93.                     if(parentTraverser.left == traverser)
  94.                     {
  95.  
  96.                         parentTraverser.left = traverser.right;
  97.                         parentTraverser.left.left = traverser.left;
  98.                         return;
  99.                     }
  100.                     if(parentTraverser.right== traverser)
  101.                     {
  102.                     parentTraverser.right = traverser.right;
  103.                     parentTraverser.right.left = traverser.left;
  104.                     return;
  105.                     }
  106.                     }
  107.                
  108.                 Node<E>traverser2 = traverser.right;
  109.                 Node<E> ParentTraverser2= null;// if traverser doesn't have left this should be the parent traverser
  110.                
  111.                 while (traverser2.left != null)
  112.                 {
  113.                     ParentTraverser2 = traverser;
  114.                     traverser2 = traverser2.left;
  115.                 }
  116.                 //traverser2.left is null => smallest element in this subtree
  117.                 traverser2.left = traverser.left;
  118.                 ParentTraverser2.left = null;
  119.                 if (parentTraverser.left.content.equals(arg))
  120.                 {
  121.                     parentTraverser.left = traverser2;
  122.                     ParentTraverser2.right.left=traverser2.right;
  123.                     return;
  124.                 }
  125.                 if (parentTraverser.right.content.equals(arg))
  126.                 {
  127.                     parentTraverser.right = traverser2;
  128.                     ParentTraverser2.left=traverser2.right;
  129.                     return;
  130.                 }
  131.             }
  132.  
  133.         }
  134.     }
  135. @Override
  136. public
  137.     boolean add(E arg)
  138.     {
  139.         if (head.isEmpty())
  140.             head.content = arg;
  141.         else
  142.         {
  143.             Node<E> traverser = head;
  144.             found: while (true)
  145.             {
  146.                 while (comp.compare(traverser.content, arg) < 0)
  147.                 {
  148.                     if (traverser.left == null)
  149.                     {
  150.                         traverser.left = new Node<E>(arg);
  151.                         break found;
  152.                     } else
  153.                     {
  154.                         traverser = traverser.left;
  155.                     }
  156.                 }
  157.                 while (comp.compare(traverser.content, arg) >= 0)
  158.                 {
  159.                     if (traverser.right == null)
  160.                     {
  161.                         traverser.right = new Node<E>(arg);
  162.                         break found;
  163.                     } else
  164.                     {
  165.                         traverser = traverser.right;
  166.                     }
  167.                 }
  168.             }
  169.  
  170.         }
  171.         return true;
  172.     }
  173.     @Override
  174.     public boolean contains(Object aarg)
  175.     {
  176.        
  177.         E arg = (E)aarg;
  178.         Node<E> traverser = head;
  179.         if (head.isEmpty())
  180.             return false;
  181.         while (true)
  182.         {
  183.             while (comp.compare(traverser.content, arg) < 0)
  184.             {
  185.                 if (traverser.left == null)
  186.                 {
  187.                     return false;
  188.                 } else
  189.                 {
  190.                     traverser = traverser.left;
  191.                 }
  192.             }
  193.             while (comp.compare(traverser.content, arg) > 0)
  194.             {
  195.                 if (traverser.right == null)
  196.                 {
  197.                     return false;
  198.  
  199.                 } else
  200.                 {
  201.                     traverser = traverser.right;
  202.                 }
  203.             }
  204.             if (comp.compare(traverser.content, arg) == 0)
  205.                 return true;
  206.  
  207.         }
  208.     }
  209.     @Override
  210.     public boolean addAll(Collection<? extends E> c)
  211.     {
  212.         // TODO Auto-generated method stub
  213.         return false;
  214.     }
  215.     @Override
  216.     public void clear()
  217.     {
  218.         // TODO Auto-generated method stub
  219.        
  220.     }
  221.     @Override
  222.     public boolean containsAll(Collection<?> c)
  223.     {
  224.         // TODO Auto-generated method stub
  225.         return false;
  226.     }
  227.     @Override
  228.     public boolean isEmpty()
  229.     {
  230.         // TODO Auto-generated method stub
  231.         return false;
  232.     }
  233.     @Override
  234.     public Iterator<E> iterator()
  235.     {
  236.         // TODO Auto-generated method stub
  237.         return null;
  238.     }
  239.     @Override
  240.     public boolean remove(Object o)
  241.     {
  242.         // TODO Auto-generated method stub
  243.         return false;
  244.     }
  245.     @Override
  246.     public boolean removeAll(Collection<?> c)
  247.     {
  248.         // TODO Auto-generated method stub
  249.         return false;
  250.     }
  251.     @Override
  252.     public boolean retainAll(Collection<?> c)
  253.     {
  254.         // TODO Auto-generated method stub
  255.         return false;
  256.     }
  257.     @Override
  258.     public int size()
  259.     {
  260.         // TODO Auto-generated method stub
  261.         return 0;
  262.     }
  263.     @Override
  264.     public Object[] toArray()
  265.     {
  266.         // TODO Auto-generated method stub
  267.         return null;
  268.     }
  269.     @Override
  270.     public <T> T[] toArray(T[] a)
  271.     {
  272.         // TODO Auto-generated method stub
  273.         return null;
  274.     }
  275. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement