-2
我想解决一个二叉搜索树问题,但我无法通过所有的测试用例。如果树是二叉搜索树,则需要返回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)
所以你要我们解决这个黑客问题,并给你的代码? –
[二叉树和二叉搜索树之间的区别]可能的重复(https://stackoverflow.com/questions/6380231/difference-between-binary-tree-and-binary-search-tree) –
我不在乎这是Hackerrank或任何,我试图解决一个二叉搜索树的问题,我尝试了很多迭代,并坚持在左树上检查较小的值,并在右树上更大。我在hackerrank上运行它,因为它们有很好的测试用例。不,这不是重复的https://stackoverflow.com/questions/6380231/difference-between-binary-tree-and-binary-search-tree – user2645029