Tree
66. Validate Binary Search Tree
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.
Examples
Example 1
Input: root = [2,1,3]
Output: true
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.
Constraints
- The number of nodes in the tree is in the range [1, 10^4].
- -2^31 <= Node.val <= 2^31 - 1
# Validate Binary Search Tree
# Given a binary tree, determine if it is a valid BST.
# Each node must be within an allowed range (min, max) that updates as we go deeper.
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def is_valid_bst(node, min_val=float("-inf"), max_val=float("inf")):
# An empty node is always valid
if not node:
return True
# Check if current node is within its allowed range
if node.val <= min_val or node.val >= max_val:
return False
# Left child must be less than current node (update max)
# Right child must be greater than current node (update min)
return (is_valid_bst(node.left, min_val, node.val) and
is_valid_bst(node.right, node.val, max_val))
# Example 1: [2,1,3] -> true
tree1 = TreeNode(2, TreeNode(1), TreeNode(3))
print(is_valid_bst(tree1)) # True
# Example 2: [5,1,4,null,null,3,6] -> false
tree2 = TreeNode(5, TreeNode(1), TreeNode(4, TreeNode(3), TreeNode(6)))
print(is_valid_bst(tree2)) # False Keyboard shortcuts
← h Previous problem
→ l Next problem
Esc Back to index
? Toggle this help