98. Validate Binary Search Tree

class Solution:
    def isValidBST(self, root: Optional[TreeNode]) -> bool:
        def recurse(node, low, hi):
            if not node:
                return True
            
            if node.val < hi and node.val > low:
                left_valid = recurse(node.left, low, node.val)
                right_valid = recurse(node.right, node.val, hi)
                return left_valid and right_valid
            
            else:
                return False
            
        return recurse(root, float("-inf"), float("inf"))

Categories:: recursion, binary-tree, tree