Python错误中的BST实现

时间:2014-11-05 17:28:22

标签: python insert tree binary-search-tree

我正在尝试在Python中实现BST。我在插入函数上收到错误:" Node对象没有插入属性。"有没有理由我不能在我定义的Node对象上调用insert函数?

class Node:
    def __init__(self, data, left=None, right=None):
        self.data=data
        self.left=left
        self.right=right        
    def setdata(self,data):
        self.data=data
    def hasLeft(self):
        return self.left 
    def hasRight(self):
        return self.right
class BST:
    def __init__(self):
        self.root=None
    def insert(self, data):
        if self.root:
            self._insert(data, self.root)
        else:
            self.root=Node(data)

    def _insert(self, data, curr):
        if data<curr.data:
            if curr.hasLeft:
                self._insert(data, curr.left)
            else:
                curr.left=Node(data)
        if data>self.data:
            if self.hasRight:
                self._insert(data, curr.right)
            else:
                curr.right=Node(data)
root = Node(2)
root.insert(1)
root.insert(3)

print root
print root.left

1 个答案:

答案 0 :(得分:0)

我认为问题出在root = Node(2)root.insert(1)语句中。当您可能需要insert时,您正在调用Node实例中的BST方法。

以下应该可行:

tree = BST()
tree.insert(2)