-
Notifications
You must be signed in to change notification settings - Fork 12.4k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Rename BST isTrue_YashV1729.Java to binarySTree isTrue_YashV1729.Java
it is a java program to check that wheather entered tree is a binary search tree
- Loading branch information
Showing
1 changed file
with
67 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,67 @@ | ||
//Java implementation to check if given Binary tree | ||
//is a BST or not | ||
|
||
/* Class containing left and right child of current | ||
node and key value*/ | ||
class Node | ||
{ | ||
int data; | ||
Node left, right; | ||
|
||
public Node(int item) | ||
{ | ||
data = item; | ||
left = right = null; | ||
} | ||
} | ||
|
||
public class BinaryTree | ||
{ | ||
//Root of the Binary Tree | ||
Node root; | ||
|
||
/* can give min and max value according to your code or | ||
can write a function to find min and max value of tree. */ | ||
|
||
/* returns true if given search tree is binary | ||
search tree (efficient version) */ | ||
boolean isBST() { | ||
return isBSTUtil(root, Integer.MIN_VALUE, | ||
Integer.MAX_VALUE); | ||
} | ||
|
||
/* Returns true if the given tree is a BST and its | ||
values are >= min and <= max. */ | ||
boolean isBSTUtil(Node node, int min, int max) | ||
{ | ||
/* an empty tree is BST */ | ||
if (node == null) | ||
return true; | ||
|
||
/* false if this node violates the min/max constraints */ | ||
if (node.data < min || node.data > max) | ||
return false; | ||
|
||
/* otherwise check the subtrees recursively | ||
tightening the min/max constraints */ | ||
// Allow only distinct values | ||
return (isBSTUtil(node.left, min, node.data-1) && | ||
isBSTUtil(node.right, node.data+1, max)); | ||
} | ||
|
||
/* Driver program to test above functions */ | ||
public static void main(String args[]) | ||
{ | ||
BinaryTree tree = new BinaryTree(); | ||
tree.root = new Node(4); | ||
tree.root.left = new Node(2); | ||
tree.root.right = new Node(5); | ||
tree.root.left.left = new Node(1); | ||
tree.root.left.right = new Node(3); | ||
|
||
if (tree.isBST()) | ||
System.out.println("IS BST"); | ||
else | ||
System.out.println("Not a BST"); | ||
} | ||
} |