Skip to content
Leetcode
Esc
↑↓navigate↵open⌘Jpreview
On this page

98. Validate Binary Search Tree

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

Tree

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

Approach

Solution

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def isValidBST(self, root: Optional[TreeNode]) -> bool:
        def valid(node, low, high):
            if not node:
                return True

            if not (low < node.val < high):
                return False

            return valid(node.left, low, node.val) and valid(node.right, node.val, high)

        return valid(root, float("-inf"), float("inf"))

Explanation

Last updated on September 24, 2026

Was this page helpful?