Info

Make sure to say r is not None instead of just r, since 0 is also considered False in python

# 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 rec(self, node, l, r):
        if (l is None) and (r is not None):
            if node.val >= r:
                return False
        elif (r is None) and (l is not None):
            if node.val <= l:
                return False
        elif l and r:
            if not (l < node.val < r):
                return False
        if node.left:
            if not self.rec(node.left, l, node.val):
                return False
        if node.right:
            if not self.rec(node.right, node.val, r):
                return False
 
        return True
 
    def isValidBST(self, root: Optional[TreeNode]) -> bool:
        return self.rec(root, None, None)

Validate Binary Search Tree 2023-02-06 10.43.42.excalidraw


References

https://leetcode.com/problems/validate-binary-search-tree/