对于二叉树的层序输出问题,使队列与二叉树结合的常见的问题,对于给定的一颗二叉树,需要按照层输出这颗二叉树,如下例子:
添加图片注释,不超过 140 字(可选)
添加图片注释,不超过 140 字(可选)
将这两颗二叉树输入的结果是:
添加图片注释,不超过 140 字(可选)
添加图片注释,不超过 140 字(可选)
在层序输出二叉树的时候,层序遍历二叉树需要应用队列来完成,所在在把每层的节点值从左到右依次取出来是最主要的一个环节。
先将第一个节点入队,然后逐个节点出队,并将其子节点按照先左子节点,后右子节点的顺序入队,这样就实现了将二叉树中的节点逐层出队,在逐层出队的时候,将每一层的节点保存在一个列表中就可以了,以例子1的二叉树为例展示队列中的一个更新过程:
添加图片注释,不超过 140 字(可选)
使用python代码实现如下:
class Solution:
def Treeprint(self, root):
result=[]
treenode_list=[]
if not root:
return result
treenode_list.append(root)
while treenode_list:
current_result=[]
nextnode_list=[]
for node in treenode_list:
current_result.append(node.val)
if node.left:
nextnode_list.append(node.left)
if node.right:
nextnode_list.append(node.right)
result.append(current_result)
treenode_list=nextnode_list
return result