二叉树 - 验证二叉搜索树

发布于:2024-09-18 ⋅ 阅读:(130) ⋅ 点赞:(0)

98. 验证二叉搜索树

在这里插入图片描述
在这里插入图片描述

方法一:辅助数组

/**
 * Definition for a binary tree node.
 * function TreeNode(val, left, right) {
 *     this.val = (val===undefined ? 0 : val)
 *     this.left = (left===undefined ? null : left)
 *     this.right = (right===undefined ? null : right)
 * }
 */
/**
 * @param {TreeNode} root
 * @return {boolean}
 */
var isValidBST = function (root) {
    let arr = [];
    const buildArr = (root) => {
        if (root) {
            buildArr(root.left);
            arr.push(root.val);
            buildArr(root.right);
        }
    }
    buildArr(root);
    for (let i = 1; i < arr.length; ++i) {
        if (arr[i] <= arr[i - 1])
            return false;
    }
    return true;
};

方法二:递归

/**
 * Definition for a binary tree node.
 * function TreeNode(val, left, right) {
 *     this.val = (val===undefined ? 0 : val)
 *     this.left = (left===undefined ? null : left)
 *     this.right = (right===undefined ? null : right)
 * }
 */
/**
 * @param {TreeNode} root
 * @return {boolean}
 */
 
var isValidBST = function (root) {
    let pre = null;
    const inOrder = (root) => {
        if (root === null) {
            return true;
        }
        let left = inOrder(root.left);

        if (pre !== null && pre.val >= root.val) {
            return false;
        }
        pre = root;
        let right = inOrder(root.right);
        return left && right;

    }
    return inOrder(root);
};

网站公告

今日签到

点亮在社区的每一天
去签到