Skip to content

Commit 3244f5b

Browse files
ayaanfaizdynamitechetan
authored andcommitted
To check if tree is valid BST tree or not (TheAlgorithms#180)
1 parent 7dacb2f commit 3244f5b

File tree

1 file changed

+62
-0
lines changed

1 file changed

+62
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
class Node
2+
{
3+
int data;
4+
Node left, right;
5+
6+
public Node(int item)
7+
{
8+
data = item;
9+
left = right = null;
10+
}
11+
}
12+
13+
public class BinaryTree
14+
{
15+
//Root of the Binary Tree
16+
Node root;
17+
18+
/* can give min and max value according to your code or
19+
can write a function to find min and max value of tree. */
20+
21+
/* returns true if given search tree is binary
22+
search tree (efficient version) */
23+
boolean isBST() {
24+
return isBSTUtil(root, Integer.MIN_VALUE,
25+
Integer.MAX_VALUE);
26+
}
27+
28+
/* Returns true if the given tree is a BST and its
29+
values are >= min and <= max. */
30+
boolean isBSTUtil(Node node, int min, int max)
31+
{
32+
/* an empty tree is BST */
33+
if (node == null)
34+
return true;
35+
36+
/* false if this node violates the min/max constraints */
37+
if (node.data < min || node.data > max)
38+
return false;
39+
40+
/* otherwise check the subtrees recursively
41+
tightening the min/max constraints */
42+
// Allow only distinct values
43+
return (isBSTUtil(node.left, min, node.data-1) &&
44+
isBSTUtil(node.right, node.data+1, max));
45+
}
46+
47+
/* Driver program to test above functions */
48+
public static void main(String args[])
49+
{
50+
BinaryTree tree = new BinaryTree();
51+
tree.root = new Node(4);
52+
tree.root.left = new Node(2);
53+
tree.root.right = new Node(5);
54+
tree.root.left.left = new Node(1);
55+
tree.root.left.right = new Node(3);
56+
57+
if (tree.isBST())
58+
System.out.println("IS BST");
59+
else
60+
System.out.println("Not a BST");
61+
}
62+
}

0 commit comments

Comments
 (0)