Example #1
0
        /// <summary>
        /// Search the tree for the specified value.
        /// By default this method traverses the tree in inorder fashion.
        /// </summary>
        public static bool BinarySearch <T>(BSTNode <T> BinaryTreeRoot, T Value, TraversalMode Mode = TraversalMode.InOrder) where T : IComparable <T>
        {
            if (BinaryTreeRoot == null)
            {
                throw new ArgumentNullException("Tree root cannot be null.");
            }

            // Traverse
            // Traverse
            switch (Mode)
            {
            case TraversalMode.PreOrder:
                return(BinaryTreeRecursiveWalker.PreOrderSearcher(BinaryTreeRoot, Value, IsBinarySearchTree: true));

            case TraversalMode.InOrder:
                return(BinaryTreeRecursiveWalker.InOrderSearcher(BinaryTreeRoot, Value, IsBinarySearchTree: true));

            case TraversalMode.PostOrder:
                return(BinaryTreeRecursiveWalker.PostOrderSearcher(BinaryTreeRoot, Value, IsBinarySearchTree: true));

            default:
                return(BinaryTreeRecursiveWalker.InOrderSearcher(BinaryTreeRoot, Value, IsBinarySearchTree: true));
            }
        }