我目前正在尝试检查一棵树是否是BST,同时注意以下事实:这些值不能等于树中的任何其他值。我尝试保持每个值应间隔的计数(将最小值和最大值视为arg [0]和arg [1])。
例如,如果我们一直在左侧子树上向下移动,将没有最小值,只有最大值。但是,当我们切换到右侧时,我们也将有一个最小值(刚从其切换到的根节点的值)。
但是,我的代码未显示正确的答案,我也不知道为什么。请你帮助我好吗?
这些是我的功能:(我正在hackerrank上解决此问题,因此这就是为什么我有两个而不是一个功能的原因)
""" Node is defined as
class node:
def __init__(self, data):
self.data = data
self.left = None
self.right = None
"""
def check_binary_search_tree_(root):
check_bst(root,None,None)
def check_bst(root,*arg):
res, res2 = True, True
if arg[0] is None and arg[1] is not None:
if root.data >=arg[1]:
return False
elif arg[1] is None and arg[0] is not None:
if root.data <= arg[0]:
return False
elif arg[1] is not None and arg[0] is not None and (root.data<=arg[0] or root.data >= arg[1]):
return False
if root.left:
res = check_bst(root.left, arg[0], root.data)
if root.right:
res2= check_bst(root.right, root.data, arg[1])
if not res or not res2:
return False
return True
最佳答案
这里的问题是您没有HackerRank调用的返回任何东西的check_binary_search_tree_
函数。代替这个
def check_binary_search_tree_(root):
check_bst(root,None,None)
你应该这样做
def check_binary_search_tree_(root):
return check_bst(root,None,None)
关于python - 检查树是否为二进制搜索树时出错,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59335861/