力扣98 验证二叉搜索树
题目:
给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。
有效 二叉搜索树定义如下:
    节点的左子树只包含 小于 当前节点的数。
    节点的右子树只包含 大于 当前节点的数。
    所有左子树和右子树自身必须也是二叉搜索树。
示例:

输入:root = [2,1,3]
输出:true
思路:
这题最容易出现的错误思路就是:单纯的比较左节点小于中间节点,右节点大于中间节点。即使递归处理了,得到的结果也是错的,比如遇到以下情况:这里10>6,但是每一层都满足单层逻辑。

我们要比较的是 左子树所有节点小于中间节点,右子树所有节点大于中间节点。
class Solution {
    TreeNode max;
    public boolean isValidBST(TreeNode root) {//1.确定参数和返回值
        if (root == null) {//2.确定终止条件
            return true;
        }
        //3.单层逻辑:中序遍历,验证遍历的元素是不是从小到大
        // 左
        boolean left = isValidBST(root.left);
        // 中
        if (max != null && root.val <= max.val) {//如果当前节点值不大于上一个节点的值,则不满足二叉搜索树
            return false;
        }
        max = root;
        // 右
        boolean right = isValidBST(root.right);
        return left&&right;
    }
}
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号