Skip to content

📚 18.验证二叉搜索树

💻 代码实现

typescript
/**
 * @url https://leetcode.cn/problems/validate-binary-search-tree/
 */

class TreeNode {
    val: number
    left: TreeNode | null
    right: TreeNode | null
    constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) {
        this.val = val === undefined ? 0 : val
        this.left = left === undefined ? null : left
        this.right = right === undefined ? null : right
    }
}

// TODO:细节挺多的
function isValidBST(root: TreeNode | null): boolean {
    let last: TreeNode
    const dfs = (root: TreeNode | null | undefined) => {
        if (!root) return true
        const left = dfs(root.left)
        if (last && root.val <= last.val) return false
        last = root
        const right = dfs(root.right)
        return left && right
    }
    return dfs(root)
}

Released under the MIT License.