【发布时间】:2015-06-16 05:09:02
【问题描述】:
我无法理解为什么我的根节点被设置为无。这是树实现的一部分。
class Node(object):
def __init__(self, d=None):
self.left = None
self.right = None
self.data = d
class Tree(object):
root = Node()
#methods to add data to to the binary search tree
def add(self, d):
node_to_add = Node(d)
if self.root is None:
self.root.data = node_to_add
self._traverse_and_add(self.root, node_to_add)
def _traverse_and_add(self, node, new_node):
if new_node.data < node.data:
if node.left is None:
node.left = new_node
else:
self._traverse_and_add(node.left, new_node)
elif new_node.data > node.data:
if node.right is None:
node.right = new_node
else:
self._traverse_and_add(node.right, new_node)
当我在调试器中运行代码时,它显示我的根是无。在我的 add 方法中,我检查根是否为 None,如果是,我希望 root.data 取值 d。在根被填充并且它不是没有之后,它可以相应地添加数据。我在Java中使用了类似的方法我没有这个问题。这个错误成为后来方法的问题,例如寻找深度。如果我使用填充树,这是我得到的视觉效果
t = Tree()
t.add(10)
t.add(2)
t.add(11)
result =
None
/\
2 10
\
11
expected =
10
/\
2 11
【问题讨论】:
-
你应该在实例变量中设置
root,否则你的Tree实例将共享同一个根
标签: python tree binary-search-tree