# Definition for a binary tree node.
class TreeNode(object):
def __init__(self, x):
self.val = x
self.left = None
self.right = None
class Solution(object):
def isValidBSTRecursive(self, node, min_value, max_value):
if node is None:
return True
# min_value < node.val < max_value
if min_value is not None and node.val <= min_value:
return False
if max_value is not None and node.val >= max_value:
return False
return (self.isValidBSTRecursive(node.left, min_value, node.val) and
self.isValidBSTRecursive(node.right, node.val, max_value))
def isValidBST(self, root):
"""
:type root: TreeNode
:rtype: bool
"""
return self.isValidBSTRecursive(root, None, None)
Замечания:
Время: $O(n)$; доп. память: $O(n)$