@@ -21,8 +21,8 @@ public class CheckForBST {
2121 * Traverse the tree in in-order fashion and insert all nodes
2222 * in a list and check for sort order of list.
2323 * <p/>
24- * Concept: Perform in -order traversal of the tree and if
25- * the result isn't in ascending order then returns false .
24+ * Concept: In -order traversal of a BST is always sorted in ascending
25+ * manner .
2626 *
2727 * @param node
2828 * @param list
@@ -45,10 +45,12 @@ public static <E extends Comparable<E>> boolean isBST(BinaryNode<E> node, List<B
4545 }
4646
4747 /**
48- * Traverse the tree in in-order fashion and keep track of prev node.
48+ * Traverse the tree in in-order fashion and keep track of its in-order
49+ * predecessor value. If at any point current node's value is found greater
50+ * than its predecessor value then return {@code false}.
4951 * <p/>
50- * Concept: Perform in -order traversal of the tree and if
51- * the result isn't in ascending order then returns false .
52+ * Concept: In -order traversal of a BST is always sorted in ascending
53+ * manner .
5254 *
5355 * @param node
5456 * @param prev
@@ -71,6 +73,12 @@ public static <E extends Comparable<E>> boolean isBST(BinaryNode<E> node, Binary
7173 }
7274
7375 /**
76+ * Simplest way to test whether a binary tree is a BST or not.
77+ * <p/>
78+ * CONCEPT: A node's left sub-tree cannot have a value more than
79+ * the node's value and similarly the node's right sub-tree cannot
80+ * have a value less than the node's value.
81+ *
7482 * @param node
7583 * @param minValue
7684 * @param maxValue
@@ -88,6 +96,7 @@ public static <E extends Comparable<E>> boolean isBST(BinaryNode<E> node, E minV
8896 }
8997
9098 public static void main (String a []) {
99+ // in-order approach
91100 BinarySearchTree <Integer > binarySearchTree = new BinarySearchTree <>();
92101 binarySearchTree .put (6 );
93102 binarySearchTree .put (3 );
@@ -106,6 +115,7 @@ public static void main(String a[]) {
106115 binaryTree .put (9 );
107116 out .println ("Is BST: " );
108117 out .println (isBST (binaryTree .root , new BinaryNode <Integer >(null )));
118+ // min max approach
109119 out .println ("Is BST: " );
110120 out .println (isBST (binarySearchTree .root , Integer .MIN_VALUE , Integer .MAX_VALUE ));
111121 out .println ("Is BST: " );
0 commit comments