二叉树学习---校验是否是合法的二叉搜索树

题目描述

leetcode地址
二叉搜索树是指:左子树的节点值严格小于根节点,右子树的节点值严格大于根节点。

源码

现给出一个二叉树,校验其是否满足二叉搜索树的特性。

比如下图中,右节点4小于根节点5,不是二叉搜索树。


截屏2021-03-01 上午11.27.15.png

思路分析

分解问题为一个一个的子问题,一颗大的二叉树是搜索树的前提是,其左右子树也是二叉树,只要在判断子树过程中发现有不满足条件的,则整个二叉树不满足条件。


截屏2021-03-01 下午6.01.26.png

代码实现

/**
 * @param {TreeNode} root
 * @return {boolean}
 */
var isValidBST = function(root) {
    if(root === null || (root.left === null && root.right === null)) return true
    return recursive(root, -Infinity, Infinity)
    function recursive(node, left, right) {
        if(node === null) return true;
        if(node.val <= left || node.val >= right) return false
        return recursive(node.left, left, node.val) && recursive(node.right, node.val, right)
    }
};

你可能感兴趣的:(二叉树学习---校验是否是合法的二叉搜索树)