力扣题解 >>> 二叉树

验证二叉搜索树

  1. 递归+判断数组是否升序
javascript 复制代码
var isValidBST = function(root) {
    // 搜索二叉树中序遍历之后的结果数组一定是升序
    if(!root){
        return true;
    }
    let result = [];
    var dg = function(node){
        if(node){
            dg(node.left);
            result.push(node.val);
            dg(node.right);
        }
    }
    dg(root);
    for(let i = 1; i < result.length; i++){
        if(result[i-1] >= result[i]){
            return false;
        }
    }
    return true;
};
  1. 递归
javascript 复制代码
var isValidBST = function(root) {
    if(!root){
        return true;
    }
    var dg = function(node,min,max){
        // 遍历到叶子节点
        if(!node){
            return true;
        }
        // 判断左子树上所有节点的值是否均小于它的根节点的值,右子树上所有节点的值是否均大于它的根节点的值
        if(node.val <= min || node.val >= max){
            return false;
        }
        return dg(node.left,min,node.val) && dg(node.right,node.val,max);
    }
    return dg(root,-Infinity, Infinity);
};
相关推荐
漂流瓶jz3 小时前
Webpack如何实现万物皆可import?loader的使用/配置/手写实践
前端·javascript·webpack
ZC跨境爬虫3 小时前
跟着 MDN 学CSS day_41:显式轨道、隐式网格与区域命名放置
前端·javascript·css·ui·交互
Moment5 小时前
长上下文会最终杀死 Rag 吗?
前端·javascript·后端
kyriewen7 小时前
大文件上传最全指南:分片、断点续传、秒传,一篇就够了
前端·javascript·面试
我叫黑大帅7 小时前
解决聊天页内部滚轮改为页面滚动问题
javascript·后端·面试
新酱爱学习8 小时前
手搓 10 个 Skill 后,我把重复劳动收敛成了一套零依赖 CLI 工具
前端·javascript·人工智能
罗超驿8 小时前
13.JavaScript 新手入门指南:语法、变量、流程控制全解析
开发语言·javascript
ct9788 小时前
Three.js 性能优化(测量-定位-优化)
javascript·性能优化·three
陈_杨9 小时前
鸿蒙开发-疾阅App阅读训练功能技术解析
前端·javascript
不好听6139 小时前
Node.js 工程化开发流程 — 知识点总结
javascript·node.js