leetcode98-验证二叉搜索树

leetcode 98

这里要验证二叉搜索树的关键是知道二叉搜索树的特性:

  • 节点的左子树只包含小于当前节点的值
  • 节点的右子树只包含大于当前节点的值
  • 所有左子树和右子树自身必须也是二叉搜索树
    根据这些特性,可以知道,如果使用中序遍历:左中右,得到的是从小到大排序的,那说明是二叉搜索树

我们可以默认先把这个二叉树当成是二叉搜索树,所以初始化设置result = true

由于二叉搜索树中序遍历后的结果是递增的,我们初始化maxValue = -Infinity,用于存储上次的节点值,下一个节点值就一定是大于maxValue的,否则就不是二叉搜索树 - > 修改result = false

如果下一个值更大,那么更新maxValue

js 复制代码
var isValidBST = function(root) {
   let result = true;
   let maxValue = -Infinity;
   const deep = (root) => {
       if(!root) return
       result && root.left && deep(root.left)
       if(maxValue >= root.val){
           result = false;
       }else{
       	maxValue = root.val;
       }
       result && root.right && deep(root.right)
   }
   deep(root)
   return result;
};
相关推荐
学究天人4 小时前
数学公理体系大全:第十四章 向量空间与模:线性代数的公理化与推广
线性代数·算法·矩阵·动态规划·抽象代数
ysu_031413 小时前
05 | 持久化撤销提示非核心功能
算法·游戏程序
浮沉98714 小时前
二分查找算法概述&通用模板
算法
Keven_1115 小时前
算法札记:SPFA判负环算法的证明
算法
什巳15 小时前
JAVA练习278- 和为 K 的子数组
java·学习·算法·leetcode
Jerry16 小时前
LeetCode 347. 前 K 个高频元素
算法
Young Doro16 小时前
SAC 算法
线性代数·算法·机器学习
罗超驿16 小时前
2.算法效率的核心密码:时间复杂度和空间复杂度详解
java·数据结构·算法