**验证二叉搜索树(leetcode)
程序员文章站
2022-04-24 15:34:22
...
给定一个二叉树,判断其是否是一个有效的二叉搜索树。
假设一个二叉搜索树具有如下特征:
节点的左子树只包含小于当前节点的数。
节点的右子树只包含大于当前节点的数。
所有左子树和右子树自身必须也是二叉搜索树。
1.递归
/** 2020.5.5 9:09
* Definition for a binary tree node.
* function TreeNode(val) {
* this.val = val;
* this.left = this.right = null;
* }
*/
/**
* @param {TreeNode} root
* @return {boolean}
*/
var isValidBST = function(root) {
if (root === null) return true //判断节点是否为空
const left = rightest(root.left)
const right = leftest(root.right)
if (left && left.val >= root.val) return false //判断左侧最右节点和父节点关系
if (right && right.val <= root.val) return false //判断右侧最左节点和父节点关系
return isValidBST(root.left) && isValidBST(root.right) //判断左右子树是否为二叉搜索树
};
var leftest = function(root){
while(root&&root.left){
root = root.left;
}
return root;
}
var rightest = function(root){
while(root&&root.right){
root = root.right;
}
return root;
}
2.中序遍历为升序
上一篇: 01 HTML快速入门
下一篇: SpringBoot-01-入门初级配置