写这个题需要对二叉搜索树的性质有基本的了解:1.二叉搜索树可以为空
2.一棵二叉搜索树中不可以出现重复值
3.右子树中的所有值都大于根节点值,左子树中的所有值都小于根节点值。
4.通过中序遍历二叉搜索树可以得到一个增序的数组。
知道了这几点尤其是第四点之后,我们就可以开始写代码了,中心思想就是把给出的树通过中序的顺序遍历,判断每个节点的值是不是递增的,所以首先我们要先定义一个参考的空节点max,然后用递归的方法中序遍历,当遍历到空节点的时候返回true即可。代码如下:
class Solution {
TreeNode max;
public boolean isValidBST(TreeNode root) {
if(root==null)
{
return true;
}
boolean left=isValidBST(root.left);
if(left==false)
{
return false;
}
if(max!=null&&root.val<=max.val)
{
return false;
}
max=root;
boolean right=isValidBST(root.right);
return right;
}
}