Example #1
0
        public static void TestKthSmallestElementFromBST()
        {
            BinarySearchTree <int> bst = new BinarySearchTree <int>();

            bst.Insert(6);
            bst.Insert(3);
            bst.Insert(2);
            bst.Insert(1);
            bst.Insert(0);
            bst.Insert(8);
            bst.Insert(7);
            bst.Insert(9);
            WalkTheTree.InOrderTraversal(bst.Head);
            Console.WriteLine();

            KthSmallestElementFromBST kObj = new KthSmallestElementFromBST();

            kObj.GetKthSmallestElement(bst.Head, 5, 0);
            Console.WriteLine("The {0}th element in the bst is {1}", 5, kObj.KthSmallestElement.Data);
            BinarySearchTreeNode <int> kthSmallestElement = kObj.GetKthSmallestElementIterative(bst.Head, 5);

            Console.WriteLine("Algo2: The {0}th element in the bst is {1}", 5, kthSmallestElement.Data);

            kObj = new KthSmallestElementFromBST();
            kObj.GetKthSmallestElement(bst.Head, 10, 0);
            Console.WriteLine("The {0}th element in the bst is {1}", 10, (kObj.KthSmallestElement == null) ? -1 : kObj.KthSmallestElement.Data);
            kthSmallestElement = kObj.GetKthSmallestElementIterative(bst.Head, 10);
            Console.WriteLine("Algo2: The {0}th element in the bst is {1}", 10, (kthSmallestElement == null) ? -1 : kthSmallestElement.Data);

            kObj = new KthSmallestElementFromBST();
            kObj.GetKthSmallestElement(bst.Head, 0, 0);
            Console.WriteLine("The {0}th element in the bst is {1}", 0, (kObj.KthSmallestElement == null) ? -1 : kObj.KthSmallestElement.Data);
            kthSmallestElement = kObj.GetKthSmallestElementIterative(bst.Head, 0);
            Console.WriteLine("Algo2: The {0}th element in the bst is {1}", 0, (kthSmallestElement == null) ? -1 : kthSmallestElement.Data);

            kObj = new KthSmallestElementFromBST();
            kObj.GetKthSmallestElement(bst.Head, 7, 0);
            Console.WriteLine("The {0}th element in the bst is {1}", 7, (kObj.KthSmallestElement == null) ? -1 : kObj.KthSmallestElement.Data);
            kthSmallestElement = kObj.GetKthSmallestElementIterative(bst.Head, 7);
            Console.WriteLine("Algo2: The {0}th element in the bst is {1}", 7, (kthSmallestElement == null) ? -1 : kthSmallestElement.Data);

            kObj = new KthSmallestElementFromBST();
            kObj.GetKthSmallestElement(bst.Head, 1, 0);
            Console.WriteLine("The {0}th element in the bst is {1}", 1, (kObj.KthSmallestElement == null) ? -1 : kObj.KthSmallestElement.Data);
            kthSmallestElement = kObj.GetKthSmallestElementIterative(bst.Head, 1);
            Console.WriteLine("Algo2: The {0}th element in the bst is {1}", 1, (kthSmallestElement == null) ? -1 : kthSmallestElement.Data);
        }
        public static void TestConvertSkewedBSTToCompleteBST()
        {
            Console.WriteLine("Test conversion from skewed BST to the complete BST");
            BinarySearchTree <int> bst = new BinarySearchTree <int>();

            bst.Insert(6);
            bst.Insert(3);
            bst.Insert(2);
            bst.Insert(1);
            bst.Insert(0);
            bst.Insert(8);
            bst.Insert(7);
            bst.Insert(9);
            BinarySearchTree <int> completeBst = ConvertSkewedBSTToCompleteBST(bst);

            WalkTheTree.InOrderTraversal(completeBst.Head);
            Console.WriteLine();
        }
        public static void TestAncestorOfTwoNodesInBST()
        {
            BinarySearchTree <int> bst = new BinarySearchTree <int>();

            bst.Insert(6);
            bst.Insert(3);
            bst.Insert(2);
            bst.Insert(1);
            bst.Insert(0);
            bst.Insert(8);
            bst.Insert(7);
            bst.Insert(9);
            WalkTheTree.InOrderTraversal(bst.Head);
            Console.WriteLine();

            Console.WriteLine("Ancestor of {0} and {1} from AncestorOfTwoNodesIterative is : {2}", 1, 7, AncestorOfTwoNodesIterative(1, 7, bst).Data);
            Console.WriteLine("Ancestor of {0} and {1} from AncestorOfTwoNodesRecursive is : {2}", 1, 7, AncestorOfTwoNodesRecursive(bst.SearchBSTIterative(1), bst.SearchBSTIterative(7), bst.Head).Data);
            Console.WriteLine("Ancestor of {0} and {1} from AncestorOfTwoNodesIterative is : {2}", 1, 3, AncestorOfTwoNodesIterative(1, 3, bst).Data);
            Console.WriteLine("Ancestor of {0} and {1} from AncestorOfTwoNodesRecursive is : {2}", 1, 3, AncestorOfTwoNodesRecursive(bst.SearchBSTIterative(1), bst.SearchBSTIterative(3), bst.Head).Data);
        }