一、题目
给你一个二叉树的根节点 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
};
五、总结
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/weixin_47450807/article/details/123333985
内容来源于网络,如有侵权,请联系作者删除!