思路:根据二叉搜索树的性质,中序遍历满足升序。那么我们就可以使用中序dfs,并且记录每个节点的前一个节点的值,如果前一个节点值比后一个大,返回false。
class Solution {
Integer pre = null; //记录前序节点
boolean isValid = true;
public boolean isValidBST(TreeNode root) {
dfs(root);
return isValid;
}
public void dfs(TreeNode root)
{
if(root == null)
return;
else{
dfs(root.left);
if(pre == null){
pre = root.val;
}
else if(pre >= root.val){ //如果前序大于当前,置为false
isValid = false;
}
else{
pre = root.val;
}
dfs(root.right);
}
}
}
递归一看就会一写就废,同学们多练习,多思考,多理解即可