Beispiel #1
0
 public void Inorder(Node localRoot)
 {
     if (localRoot != null)
     {
         Inorder(localRoot.left);
         Console.WriteLine("TNumber: " + localRoot.data.TNumber + " Name: " + localRoot.data.Name + " Advisor: " + localRoot.data.Advisor);
         Inorder(localRoot.right);
     }
 }
Beispiel #2
0
 public void Delete(int key)
 {
     if (root==null || Search(key) == null) // if this student doesn't exist in the BST
     {
         Console.WriteLine("No item found to delete");
         return;
     }
     root = Delete(root, key);
     Console.WriteLine(key + " has been deleted");
 }
Beispiel #3
0
        public Node Delete(Node node, int key)
        {
            Node temp1, temp2;

            if (node.data.TNumber == key)
            {
                if (node.left == null && node.right == null) // removing root with no children
                    return null;
                else if (node.left == null) // removing root that has only right child
                    return node.right;
                else if (node.right == null) // removing root that has only left child
                    return node.left;
                else // we are removing some node other than the root
                {
                    temp1 = node.right;
                    temp2 = temp1;
                    while (temp2.left != null)
                    {
                        temp2 = temp2.left;
                    }
                    // temp2 is now pointing at the left most child of the right child of the node we are removing
                    // this is the smallest value in the tree that is greater than the node we are removing
                    // attach the left subtree of the node being deleted as the left child of this node
                    temp2.left = node.left;
                    return temp1;
                }
            }
            // have not found the key yet, keep recursing in the appropriate direction
            else if(key < node.data.TNumber)
            {
                node.left = Delete(node.left, key);
            }
            else
            {
                node.right = Delete(node.right, key);
            }
            return node;
        }
Beispiel #4
0
 public Node(student d)
 {
     data = d;
     left = null;
     right = null;
 }
Beispiel #5
0
 public Node Insert(Node node, student data)
 {
     if (node == null)               //BST is empty
         node = new Node(data);
     else
     {
         if (data.TNumber <= node.data.TNumber)
             node.left = Insert(node.left, data);    // new node goes somewhere in left subtree
         else
             node.right = Insert(node.right, data);  // new node goes into the right subtree
     }
     return node;
 }
Beispiel #6
0
 public void Insert(student data)
 {
     root = Insert(root, data);
 }
Beispiel #7
0
 public BinarySearchTree()
 {
     root = null;
 }