public static void Main(string[] args) { /* * * * 7 * / \ * 3 13 * / \ / \ * 2 4 9 16 * / \ * 1 19 * */ BinarySearchTree BST = new BinarySearchTree(); /* * * BST.Insert(BST.GetRoot(),4); * BST.Insert(BST.GetRoot(),7); * BST.Insert(BST.GetRoot(),16); * BST.Insert(BST.GetRoot(),19); * BST.Insert(BST.GetRoot(),3); * BST.Insert(BST.GetRoot(),1); * BST.Insert(BST.GetRoot(),9); * BST.Insert(BST.GetRoot(),2); * */ BST.InsertBST(6); BST.InsertBST(4); BST.InsertBST(9); BST.InsertBST(2); BST.InsertBST(5); BST.InsertBST(8); BST.InsertBST(12); BST.InsertBST(10); BST.InsertBST(14); Console.WriteLine(Environment.NewLine); int searchValue = 9; Console.WriteLine($"Searching for Value {searchValue} in the tree.. "); if (BinarySearchTree.Search(BST.GetRoot(), searchValue) != null) { Console.WriteLine($"Value {searchValue} found!!"); } else { Console.WriteLine($"Value {searchValue} not found!!"); } List <int> result = new List <int>(); // Node root = BinarySearchTree.CreateTree(); Console.WriteLine(Environment.NewLine); Console.WriteLine("InOrder Traversal: "); BinarySearchTree.InOrder(BST.GetRoot(), result); Console.WriteLine(string.Join(" ", result)); Console.WriteLine(Environment.NewLine); Console.WriteLine("Delete 2"); Console.WriteLine(BST.Delete(BST.GetRoot(), 2)); Console.WriteLine("After deletion"); result.Clear(); Console.WriteLine("InOrder Traversal: "); BinarySearchTree.InOrder(BST.GetRoot(), result); Console.WriteLine(string.Join(" ", result)); Console.WriteLine(Environment.NewLine); Console.WriteLine("PreOrder Traversal: "); BinarySearchTree.PreOrder(BST.GetRoot()); Console.WriteLine(Environment.NewLine); Console.WriteLine("PostOrder Traversal: "); BinarySearchTree.PostOrder(BST.GetRoot()); Console.WriteLine(Environment.NewLine); Console.WriteLine("Find Minimum Value in Binary Search Tree: "); int min = BinarySearchTree.FindMinimum(BST.GetRoot()); Console.WriteLine($"Minimum value in Binary Search tree is: {min}"); Console.WriteLine(Environment.NewLine); Console.WriteLine("Find Maximum Value in Binary Search Tree: "); int max = BinarySearchTree.FindMaxium(BST.GetRoot()); Console.WriteLine($"Maximum value in Binary Search tree is: {max}"); Console.WriteLine(Environment.NewLine); Console.WriteLine("Find kth Maximum Value in Binary Search Tree: "); int k = 3; int kmax = BinarySearchTree.FindKMaxium(BST.GetRoot(), k); Console.WriteLine($"kth Maximum: k={k} value in Binary Search tree is: {kmax}"); int k1 = 10; Console.WriteLine(Environment.NewLine); Console.WriteLine($"Find Ancestors of Node k: {k1} in Binary Search Tree: "); Console.WriteLine(BinarySearchTree.FindAncestors(BST.GetRoot(), k1)); Console.WriteLine($"Height of Binary Search tree is: {BinarySearchTree.FindHeight(BST.GetRoot())}"); int k2 = 3; Console.WriteLine($"Binary Search Tree Nodes at k: {k2} distance"); Console.WriteLine(BinarySearchTree.FindKNodes(BST.GetRoot(), k2)); }