Question: Given a binary tree, check whether it is a binary search tree or not.
Solution 1:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
| public boolean isBST(TreeNode T) { if(T == null){ return true; } if(T.left != null && T.element < getMaxVal(T.left)) { return false; } if(T.right != null && T.element > getMinVal(T.right)) { return false; } return isBST(T.left) && isBST(T.right); } private int getMaxVal(TreeNode T){ while(T.right != null) { T = T.right; } return T.element; } private int getMinVal(TreeNode T){ while(T.left != null) { T = T.left; } return T.element; } |
Solution 2: Efficient one
1
2
3
4
5
6
7
8
9
10
11
| public boolean isBST2(TreeNode T, int min, int max) { if(T == null) { return true; } if(min < T.element && T.element < max) { return isBST2(T.left, min, T.element) && isBST2(T.right, T.element, max); } else { return false; } } |
No comments:
Post a Comment