98\. Validate Binary Search Tree

# 98. Validate Binary Search Tree (opens new window)

# Description

Difficulty: Medium

Related Topics: Tree (opens new window), Depth-First Search (opens new window), Binary Search Tree (opens new window), Binary Tree (opens new window)

Given the root of a binary tree, determine if it is a valid binary search tree (BST).

A valid BST is defined as follows:

  • The left subtree of a node contains only nodes with keys less than the node's key.
  • The right subtree of a node contains only nodes with keys greater than the node's key.
  • Both the left and right subtrees must also be binary search trees.

Example 1:

Input: root = [2,1,3]
Output: true
1
2

Example 2:

Input: root = [5,1,4,null,null,3,6]
Output: false
Explanation: The root node's value is 5 but its right child's value is 4.
1
2
3

Constraints:

  • The number of nodes in the tree is in the range [1, 104].
  • -231 <= Node.val <= 231 - 1

# Solution

Language: JavaScript

/**
 * 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) {
    return helper(root)
};const helper = (node, min = Number.MIN_SAFE_INTEGER, max = Number.MAX_SFFE_INTEGER) => {
    if (!node) return true;
    if (node.val <= min || node.val >= max) return false;
    
    return helper(node.left, min, node.val) && helper(node.right, node.val, max);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
上次更新: 2022/7/14 下午9:02:41