力扣题解 >>> 二叉树

验证二叉搜索树

  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);
};
相关推荐
BillKu1 分钟前
Element Plus 对话框 el-dialog 和 抽屉 el-drawer 的使用注意项(使用 div 包裹)
javascript·vue.js·elementui
layman05282 分钟前
Vue 中的配置代理
前端·javascript·vue.js
BillKu8 分钟前
Vue3 + TypeScript 中 hook 优化记录
开发语言·javascript·typescript
未来之窗软件服务12 分钟前
jquery 赋值时不触发change事件解决——仙盟创梦IDE
前端·javascript·jquery·仙盟创梦ide·东方仙盟
AnyaPapa17 分钟前
【解决方案】Vue 常见问题大全
前端·javascript·vue.js
浩宇软件开发1 小时前
JavaScript 数组常用方法 find, findIndex, filter, map, flatMap, some
前端·javascript·vue.js
永生辉皇1 小时前
JS红宝书笔记 8.3 继承
开发语言·javascript·笔记
前端Hardy1 小时前
前端性能飞跃!9大高级API实战指南,80%的开发者只知其三
前端·javascript
永生辉皇2 小时前
JS红宝书笔记 8.2 创建对象
javascript·笔记·原型模式
上单带刀不带妹2 小时前
解锁 JavaScript 模块化:ES6 Module 语法深度指南
开发语言·前端·javascript·es6