98. Validate Binary Search Tree
这道题是判断树是否为BST。
BST的定义如下:
1) 左子树的所有节点的值小于父节点的值;
2) 右子树的所有节点的值大于父节点的值。
我们可以用中序遍历的方法得出一个数组,并判断数组是否是递增的。代码如下:
1 /**
2 * Definition for a binary tree node.
3 * public class TreeNode {
4 * int val;
5 * TreeNode left;
6 * TreeNode right;
7 * TreeNode(int x) { val = x; }
8 * }
9 */
10 class Solution {
11 public boolean isValidBST(TreeNode root) {
12
13 List<Integer> res = new ArrayList<Integer>();
14
15 if(root == null){
16 return true;
17 }
18
19 helper(root, res);
20
21 if(res.size() == 1){
22 return true;
23 }
24
25 for(int i = 0 ; i < res.size() - 1 ; i++) {
26 if( res.get(i) >= res.get(i+1) ){
27 return false;
28 }
29 }
30
31 return true;
32 }
33
34 private void helper(TreeNode root, List<Integer> res){
35
36 if( root == null) return ;
37 helper(root.left, res);
38 res.add(root.val);
39 helper(root.right, res);
40 }
41 }
END