【发布时间】:2017-07-03 14:14:50
【问题描述】:
我正在尝试解决二叉搜索树问题,但我无法通过所有测试用例。如果树是二叉搜索树,我需要返回 true,否则,我需要返回 false。我还需要检查重复项并确保右树中的每个值都大于根,并且左树中的每个值都小于根。
这是我要解决的hackerrank挑战,链接在这里:https://www.hackerrank.com/challenges/ctci-is-binary-search-tree
正如我在第一个问题中所建议的那样,Is tree a binary search tree? 这是不检查重复或右树中的每个值是否大于根的解决方案,左树也是如此。
对于重复,我知道如何解决它,但不确定如何检查值是否小于左侧树上的根,而右侧树上的值是否更大。
'''
class node:
def __init__(self, data):
self.data = data
self.left = None
self.right = None
'''
def checkBST(root):
if root == None or (root.left == None and root.right == None):
return True
elif root.right == None:
return root.left.data < root.data and checkBST(root.left)
elif root.left == None:
return root.right.data >= root.data and checkBST(root.right)
return checkBST(root.left) and checkBST(root.right)
【问题讨论】:
-
所以你希望我们解决这个hackerrank问题并给你代码?
-
我不在乎它是 Hackerrank 还是其他什么,我正在尝试解决我在多次迭代中尝试过的二叉搜索树问题,并坚持检查左侧树上的较小值和较大的值正确的树。我在hackerrank上运行它,因为他们有很好的测试用例。不,这不是 stackoverflow.com/questions/6380231/… 的副本
-
这是一个代码转储,其中包含我无法解决此问题的短语,请为我解决此问题
标签: python-3.x binary-search-tree