← Back to Leo Academy Masterclass

Problem #98: Validate Binary Search Tree

Medium Binary Search Tree

Intuition & Strategy Breakdown

Perform DFS passing valid range boundaries (min_val, max_val). Ensure left node < curr < right node for all nodes in the tree.

Python Solution

class Solution:
    def isValidBST(self, root) -> bool:
        def validate(node, min_val, max_val):
            if not node:
                return True
            if node.val <= min_val or node.val >= max_val:
                return False
            return (validate(node.left, min_val, node.val) and
                    validate(node.right, node.val, max_val))
        return validate(root, float('-inf'), float('inf'))

Java Solution

class Solution {
    public boolean isValidBST(TreeNode root) {
        return validate(root, Long.MIN_VALUE, Long.MAX_VALUE);
    }
    private boolean validate(TreeNode node, long min, long max) {
        if (node == null) return true;
        if (node.val <= min || node.val >= max) return false;
        return validate(node.left, min, node.val) &&
               validate(node.right, node.val, max);
    }
}
Watch Interactive Video on Leo Academy Main App