思路:根据二叉搜索树的性质,中序遍历满足升序。那么我们就可以使用中序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){ //如果前序大于当前,置为falseisValid = false;}else{pre = root.val;}dfs(root.right);}}
}
递归一看就会一写就废,同学们多练习,多思考,多理解即可