leetcode - 验证二叉搜索树

时间:2018-07-23 10:36:58   收藏:0   阅读:173

给定一个二叉树,判断其是否是一个有效的二叉搜索树。

一个二叉搜索树具有如下特征:

示例:

    输入:
         2
        /        1   3
    输出: true

    输入:
     5
    /     1   4
       /         3   6
输出: false
解释: 输入为: [5,1,4,null,null,3,6]。
根节点的值为 5 ,但是其右子节点值为 4

思路:

实现:

    /**
    * 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;
        }

        let nums = [];

        let isValid = true;

        //中序遍历
        const inOrder = (node) => {
            if(node){
                inOrder(node.left);
                nums.push(node.val);
                inOrder(node.right);

            }
        }

        inOrder(root);

        //校验是否有序
        for (let i = 1; i < nums.length; i++) {
            if (nums[i] <= nums[i - 1]) {
                isValid = false;
            }
        }

        return isValid;

    }

原文:https://www.cnblogs.com/jianzhihao/p/9352877.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!