我必须确定是否给定一个代表树的列表,该树是否是有效的BST(这个问题来自leetcode)。我也看到了其他的帖子,但我想知道是否有人可以帮助我的方法,因为这显然是不正确的。例如,对于树[1,2,3],其中1是根,2是左子项,3是右子项,我的代码返回true。希望它只需要一些小的更改,但可能整个函数的方法是不正确的。在
这是我的代码:
def isValidBST(self, root):
if (root == None):
return True
if (root.left == None or root.left.val < root.val):
return self.isValidBST(root.left)
if (root.right == None or root.right.val > root.val):
return self.isValidBST(root.right)
return False
第二,我看到了一些方法,它使用了一个helper函数,它接受最小/最大值,但这让我很困惑。如果有人想解释为什么这种方法是一种好的/更好的方法,我们将不胜感激!在
以下是实现有效性检查的一种方法:
我将为
Node
s创建一个min_max
方法,它可以找到根在Node
上的树的最小值和最大值。在找到它们的同时进行健全性检查,然后isValidBST
就可以捕捉到异常相关问题 更多 >
编程相关推荐