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

题目描述

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)
    }
};
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容