__doc__ = u"""
1
2 3
4 5 6 7
8 9 10 11
"""
import copy
class Node(object):
def __init__(self,value):
self.value = value
self.left = None
self.right = None
def __str__(self):
return str(self.value)
def print_bin_tree(root):
array = []
tmp = [{"node":root,"level":0}]
while tmp:
array = copy.copy(tmp)
tmp = []
for elem in array: #打印顺序
node = elem["node"]
level = elem["level"]
print(node.value)
array.reverse()
for elem in array: #添加顺序
node = elem["node"]
level = elem["level"]
if level %2 == 0: #先右,后左
if node.right:
tmp.append({"node":node.right,"level":level + 1})
if node.left:
tmp.append({"node":node.left,"level":level+1})
else:
if node.left:
tmp.append({"node":node.left,"level":level+1})
if node.right:
tmp.append({"node":node.right,"level":level+1})
level = level + 1
if __name__ == "__main__":
root = Node(1)
root.left = Node(2)
root.right = Node(3)
root.left.left = Node(4)
root.left.right = Node(5)
root.right.left = Node(6)
root.right.right = Node(7)
root.left.left.left = Node(8)
root.left.left.right = Node(9)
root.right.right.left = Node(10)
root.right.right.right = Node(11)
print_bin_tree(root)
算法:树Z型遍历
最新推荐文章于 2025-04-03 11:02:57 发布
这段代码实现了一个二叉树的层次遍历,并以特定顺序打印节点。首先从根节点开始,然后按照右子节点优先的原则遍历每一层。在遍历过程中,先将当前层级的节点加入队列,然后反向处理并打印,最后添加下一层节点到队列中。
755

被折叠的 条评论
为什么被折叠?



