python - 查找 BST 中的所有节点是否都大于一个项目

标签 python

我一直在尝试实现下面的 all_bigger 函数,但我不确定我的逻辑是否存在缺陷。据我了解,BST 的组织结构在左侧具有最小值,因此我只需要检查 BST 的左侧。有没有更好的写法或者我的代码不正确?

class BSTNode:
"""A node is a BST """
    def __init__(self: 'BSTNode', item, left, right):
        self.item, self.left, self.right = item, left, right

    def all_bigger(self, value):
        """
        >>> bst = BSTNode(5, BSTNode(4), BSTNode(6))
        >>> all_bigger(bst, 2)
        True
        """
        while self.left:
            if self.left > value:
                self.value = self.left:
            else:
                return False
        return True

最佳答案

您的代码几乎是正确的,但有一些小错误。更正后的代码:

class BSTNode:
    """A node is a BST """
    def __init__(self, item, left = None, right = None):
        self.item, self.left, self.right = item, left, right

    def all_bigger(self, value):
        """
        >>> bst = BSTNode(5, BSTNode(4), BSTNode(6))
        >>> all_bigger(bst, 2)
        True
        """
        root = self
        while(root!=None):
            if root.item > value:
                root = root.left
            else:
                return False
        return True

bst = BSTNode(5, BSTNode(4,BSTNode(1, None, None),None), BSTNode(6,None,None)) # Returns False
print(bst.all_bigger(2))

关于python - 查找 BST 中的所有节点是否都大于一个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51860417/

相关文章:

python - IronPython 网络框架

python - 删除 pandas 数据框中少于 6 个月的重叠周期

python - 如何正确换行 django 语句以满足 flake8 的要求?

python - 使用多索引对数据框进行排序

python - C数组与NumPy数组

python - 如何在正则表达式中使用 OR

python - 如何从 Django/postgreSQL 中的数据库中随机获取一个项目?

python - isinstance(foo,bar) vs type(foo) is bar

Python3 和 Tkinter - 无法分配 27 个字节

Python - 将分箱数据保存到文本文件