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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值