这是我的代码。完整的二叉树在深度k处具有2 ^ k个节点。
class Node:
def __init__(self, data):
# initializes the data members
self.left = None
self.right = None
self.data = data
root = Node(data_root)
def create_complete_tree():
row = [root]
for i in range(h):
newrow = []
for node in row:
left = Node(data1)
right = Node(data2)
node.left = left
node.right = right
newrow.append(left)
newrow.append(right)
row = copy.deepcopy(newrow)
def traverse_tree(node):
if node == None:
return
else:
traverse_tree(node.left)
print node.data
traverse_tree(node.right)
create_complete_tree()
print 'Node traversal'
traverse_tree(root)
树遍历仅提供root及其子项的数据。我做错了什么?
答案 0 :(得分:2)
这里的主要问题是您在临时列表中使用深度复制。考虑每次迭代会发生什么:
这意味着后续迭代不会改变您创建的节点(以及root.left和root.right指向的节点),而是它们的副本,使原始状态保持为当前状态(使用None
.left
和.right
)