【问题标题】:Error on checking if a tree is a Binary Search Tree检查树是否为二叉搜索树时出错
【发布时间】:2020-04-07 16:34:59
【问题描述】:

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

【问题讨论】:

  • 有一种更简单的算法,在遍历树时只需要一个值。

标签: python search tree binary-tree binary-search-tree


【解决方案1】:

您的问题是您没有 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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-09
    • 1970-01-01
    • 2018-05-16
    • 2012-06-05
    • 1970-01-01
    • 1970-01-01
    • 2017-09-28
    • 1970-01-01
    相关资源
    最近更新 更多