leetcode 98. 验证二叉搜索树

解题思路

判断每个节点的值是否在 (l, r) 范围内 (开区间)

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 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: TreeNode) -> bool:
return self.solve(root)

def solve(self, root, lower=-float('INF'), upper=float('INF')):
if not root:
return True

if not (lower < root.val < upper):
return False

if not self.solve(root.left, lower, root.val):
return False

if not self.solve(root.right, root.val, upper):
return False

return True