Leetcode刷题(第98题)——验证二叉搜索树

x33g5p2x  于2022-03-07 转载在 其他  
字(0.7k)|赞(0)|评价(0)|浏览(259)

一、题目

给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。

有效 二叉搜索树定义如下:
节点的左子树只包含 小于 当前节点的数。
节点的右子树只包含 大于 当前节点的数。
所有左子树和右子树自身必须也是二叉搜索树。

二、示例

输入:root = [2,1,3]
输出:true

输入:root = [5,1,4,null,null,3,6]
输出:false
解释:根节点的值是 5 ,但是右子节点的值是 4 。

三、思路
二叉搜索树,如果我们使用中序遍历的话,此时就会返回一个升序的数组。我们可以用一个数组保存值,当向该数组中插入元素时,比较当前数组中的最后一个元素和当前准备插入值的大小即可。
四、代码

/**
 * Definition for a binary tree node.
 * function TreeNode(val, left, right) {
 *     this.val = (val===undefined ? 0 : val)
 *     this.left = (left===undefined ? null : left)
 *     this.right = (right===undefined ? null : right)
 * }
 */
/**
 * @param {TreeNode} root
 * @return {boolean}
 */
var isValidBST = function(root) {
    let res = []
    let flag = true
    const rec = (node) => {
        if(node.left) rec(node.left)
        if(res[res.length - 1] >= node.val) {
            flag = false
        }else {
            res.push(node.val)
        }
        if(node.right) rec(node.right)
    }
    rec(root)
    return flag
};

五、总结

相关文章

微信公众号

最新文章

更多