我目前正在尝试检查一棵树是否是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/

10-10 22:34