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

posted @ 2018-04-09 09:45  sysu_kww  阅读(101)  评论(0编辑  收藏  举报