我正在尝试在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
答案 0 :(得分:0)
我认为问题出在root = Node(2)
和root.insert(1)
语句中。当您可能需要insert
时,您正在调用Node
实例中的BST
方法。
以下应该可行:
tree = BST()
tree.insert(2)