题目地址:
98. Validate Binary Search Tree
题意:判断一个二叉树是否是平衡二叉树。
平衡二叉树的性质就是中序遍历得到的是一个递增的数组。
很容易就写出下面方法:
class Solution {
public boolean isValidBST(TreeNode root) {
if(root==null)return true;
List vec = new ArrayList<>();
inorder(root,vec);
for(int i=0;i=vec.get(i+1))return false;
}
return true;
}
public void inorder(TreeNode root,List vec){
if(root==null)return ;
inorder(root.left,vec);
vec.add(root.val);
inorder(root.right,vec);
}
}
看网上的还有一种思路就是遍历时记录最大值和最小值。
class Solution {
public boolean isValidBST(TreeNode root) {
if(root==null)return true;
return isValidBST(root,Long.MIN_VALUE, Long.MAX_VALUE);
//因为有着Intefer.MAX_VALUE测试数据,这里需要long
}
public boolean isValidBST(TreeNode root,long min,long max){
if(root==null)return true;
if(root.val<=min||root.val>=max)return false;
return isValidBST(root.left,min,root.val)&&isValidBST(root.right,root.val,max);
}
}