import sys class Solution: def isValidBST(self, root: Optional[TreeNode]) -> bool: def is_valid(node, left_bound=sys.maxsize, right_bound=-sys.maxsize): if not node: return True if not (node.val < left_bound and node.val > right_bound): return False return is_valid(node.left, node.val, right_bound) and \ is_valid(node.right, left_bound, node.val) return is_valid(root) Complexity Time: O(n) Space: O(n)