python解决二叉树层序输出问题

对于二叉树的层序输出问题,使队列与二叉树结合的常见的问题,对于给定的一颗二叉树,需要按照层输出这颗二叉树,如下例子:

python解决二叉树层序输出问题_第1张图片

添加图片注释,不超过 140 字(可选)

python解决二叉树层序输出问题_第2张图片

添加图片注释,不超过 140 字(可选)

将这两颗二叉树输入的结果是:

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

在层序输出二叉树的时候,层序遍历二叉树需要应用队列来完成,所在在把每层的节点值从左到右依次取出来是最主要的一个环节。

先将第一个节点入队,然后逐个节点出队,并将其子节点按照先左子节点,后右子节点的顺序入队,这样就实现了将二叉树中的节点逐层出队,在逐层出队的时候,将每一层的节点保存在一个列表中就可以了,以例子1的二叉树为例展示队列中的一个更新过程:

python解决二叉树层序输出问题_第3张图片

添加图片注释,不超过 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

你可能感兴趣的:(数据结构,算法,python)