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); } }
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"); }
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; }
public Node(student d) { data = d; left = null; right = null; }
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; }
public void Insert(student data) { root = Insert(root, data); }
public BinarySearchTree() { root = null; }