方法一
public boolean isValidBST(TreeNode root) {
boolean m=false;
if(root!=null){
if(root.left!=null&&root.right!=null){
m=root.left.val<root.val&&root.val<root.right.val&&isValidBST(root.left)&&isValidBST(root.right);
}
if(root.left!=null&&root.right==null){
m= root.left.val<root.val&&isValidBST(root.left);
}
if(root.left==null&&root.right!=null){
m= root.val<root.right.val&&isValidBST(root.right);
}
if(root.left==null&&root.right==null){
m=true;
}
}else{
m= true;
}
return m;
}
错误原因:没有考虑到左边的值不仅要小于他的父亲,也要小于祖父这些,同理,右边也是。最根本的,应该用深度搜索,结果只是简单的递归,不是深度搜索。
方法二