leetcode - 验证二叉搜索树

Posted jianzhihao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode - 验证二叉搜索树相关的知识,希望对你有一定的参考价值。

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

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

  • 节点的左子树只包含小于当前节点的数。
  • 节点的右子树只包含大于当前节点的数。
  • 所有左子树和右子树自身必须也是二叉搜索树。

示例:

    输入:
         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;

    }

以上是关于leetcode - 验证二叉搜索树的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode第九十八题—验证二叉搜索树—Python实现

Leetcode98. 验证二叉搜索树(递归)

LeetCode 98 验证二叉搜索树

LeetCode:验证二叉搜索树98

[JavaScript 刷题] 树 - 验证二叉搜索树, leetcode 98

LeetCode 98. 验证二叉搜索树