Python数据结构二进制搜索

2024-10-03 23:23:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我搞不清楚我会犯什么样的错误

Traceback (most recent call last): File "C:/Users/Eli/.PyCharmCE2019.2/config/scratches/BinarySearchTree.py", line 43, in bt.printTreePreOrder(bt.Root()) TypeError: 'NoneType' object is not callable

class BinaryTreeNode:


 def __init__(self,key, data = None):
        self.key = key
        self.value = data
        self.left = None
        self.right = None
class BinarySearchTree:
    def __init__(self):
        self.Root = None
        self.size = 0
    def __len__(self):
        return self.size
    def root (self):
        return self.Root
    def insert(self,key,data):
        new_node = BinaryTreeNode(key,data)
        x = self.Root
        y = None
        while x != None:
            y = x
            if key < y.key:
                x = x.left
            else:
                x = x.right
                if y == None:
                    self. key < y.key
                    y.left = new_node
                else:
                    y.right = new_node
            self.size +=1
    def printTreePreOrder(self,node):
        print(node.key)
        if node.left:
            self.printTreePreOrder(node.left)
        if node.right:
            self.printTreePreOrder(node.right)
if __name__ == "__main__":
    bt = BinarySearchTree()
    bt.insert(12,'bill')
    bt.insert(6,'Tom')
    bt.insert(14,'jill')
    bt.insert(3,'guy')
    bt.printTreePreOrder(bt.Root())

Tags: keyselfrightnonenodedatasizeif
1条回答
网友
1楼 · 发布于 2024-10-03 23:23:57

您试图调用Root,好像它是一个函数,但它只是BinaryTreeNode类的成员变量,因此不可调用

此外,它作为NoneType返回,因为您将它初始化为None,并且它从未分配给任何其他值

按照您实现它的方式,您应该执行bt.printTreePreOrder(bt.Root)

相关问题 更多 >