这是下面的代码,我的思考过程是,如果树中的最小值小于根,树中的最大值大于根,则应检查BST是否有效
String
答案 0 :(得分:1)
请勿重用名称min
和max
。他们已经提到了内置功能。
您的min
和max
函数通过更改self.root
来更改树。
您应该先验证左右子节点的值相对于父节点正确,然后再验证植根于这些子节点的每个BST本身是否有效。
class Node:
def __init__(self, value, left=None, right=None):
self.value = value
self.left = left
self.right = right
def valid(self):
if self.left and self.left.value > self.value:
return False
if self.right and self.right.value < self.value:
return False
return all(node.valid() for node in (self.left, self.right) if node)