Beispiel #1
0
 static void TestRemove(BST <int> bst)
 {
     bst.Remove(5);
     bst.Remove(8);
     bst.Remove(20);
     Console.WriteLine("Removing: \t" + bst.ToString());
 }
        static void Main(string[] args)
        {
            BST Bst = new BST();

            //SetBST(Bst);

            //Write("PreOrder: "); PreOrder(Bst.Root);
            //Write("\nInOrder: "); InOrder(Bst.Root);
            //Write("\nPostOrder: "); PostOrder(Bst.Root);

            Bst.Add(45);
            Bst.Add(35);
            Bst.Add(12);
            Bst.Add(5);
            Bst.Add(56);
            Bst.Add(37);
            Bst.Add(60);

            Bst.Search(70);
            Bst.Search(37);

            Bst.Remove(45);
            Bst.Remove(30);
            Bst.Remove(5);
            Bst.Remove(70);
            Bst.Remove(35);
        }
Beispiel #3
0
 public void Remove(int value, BST parent)
 {
     if (value < this.value)
     {
         // look left
         if (left != null)
         {
             left.Remove(value, this);
         }
     }
     else if (value > this.value)
     {
         // look right
         if (right != null)
         {
             right.Remove(value, this);
         }
     }
     else
     {
         // remove case
         if (left != null && right != null)
         {
             // full subtree
             this.value = right.getMinValue();
             right.Remove(this.value, this);
         }
         else if (parent == null)
         {
             // partial subtree case
             if (left != null)
             {
                 this.value = left.value;
                 right      = left.right;
                 left       = left.left;
             }
             else if (right != null)
             {
                 this.value = right.value;
                 left       = right.left;
                 right      = right.right;
             }
             else
             {
                 // single node tree here
             }
         }
         else if (parent.left == this)
         {
             parent.left = left != null ? left : right;
         }
         else if (parent.right == this)
         {
             parent.right = left != null ? left : right;
         }
     }
 }
Beispiel #4
0
        static void Main(string[] args)
        {
            BST tree = new BST();

            tree.Add(20);
            tree.Add(15);
            tree.Add(17);
            tree.Add(30);
            tree.Add(34);
            tree.Add(32);
            tree.Add(10);
            tree.Add(12);
            CheckTree(tree);
            Console.WriteLine("***-*-*-*-*-*-*-***");
            tree.Print();
            tree.Remove(tree.GetNode(15));
            CheckTree(tree);
            Console.WriteLine("***-*-*-*-*-*-*-***");
            tree.Print();
            Console.ReadLine();
        }