合法二叉搜索树

85 阅读1分钟

检查一棵树是否为合法的二叉搜索树 实现一个函数,检查一棵二叉树是否为二叉搜索树。

示例 1: 输入: 2 /
1 3 输出: true 示例 2: 输入: 5 /
1 4   /
3 6 输出: false 解释: 输入为: [5,1,4,null,null,3,6]。   根节点的值为 5 ,但是其右子节点值为 4 。

来源:力扣(LeetCode) 链接:leetcode-cn.com/problems/le… 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

const isValidBST = root => {
    let preVal = -Infinity;
    const inOrder = root => {
        if (!root) return true;
        const L = inOrder(root.left);
        // 当前值小于等于上一个值,不递增,肯定不是二叉搜索树
        if (root.val <= preVal) return false;
        preVal = root.val;
        const R = inOrder(root.right);
        // 左右子树都要是二叉搜索树
        return L && R;
    };
    return inOrder(root);
};