从上到下按层打印二叉树——题解

把二叉树打印成多行

https://www.nowcoder.com/practice/445c44d982d04483b04a54f298796288?tpId=13&&tqId=11213&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking

层序遍历的方法,使用两个数组current,next表示当前层和下一层的节点,不断地更新current和next的内容,直到current为空。(借用别人的方法,记录)

# -*- coding:utf-8 -*-
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None
class Solution:
    # 返回二维列表[[1,2],[4,5]]
    def Print(self, pRoot):
        # write code here
        if not pRoot:
            return []
        res = []
        currentLayer = [pRoot]
        nextLayer = []
        # 类似传统的层序遍历,将某一个节点加入队列,每一次移出节点的时候,就将他的子节点加入队列,这里使用两个数组,目的是区别不同层
                
        while currentLayer:
            for node in currentLayer:
                if node.left is not None:
                    nextLayer.append(node.left)
                if node.right is not None:
                    nextLayer.append(node.right)
            res.append([i.val for i in currentLayer])
            # 更新
            currentLayer, nextLayer = nextLayer, []
            
        return res


全部评论

相关推荐

想干测开的tomca...:这份简历是“大一新生硬凹资深后端”的典型反面教材,槽点离谱到能让面试官直接笑出声: ### 1. 「年龄+入学时间」和项目复杂度完全脱节,可信度直接归0 你2024年7月才入学(现在刚读了1年多),19岁的大一新生,能把Vue3+Spring Boot+ShardingSphere+K8s+AI这些技术全塞进两个项目里?别说实际开发,光把这些技术的文档看完都得半年——这不是“能力强”,是“把招聘JD里的技术词全抄过来造假”,明摆着没碰过实际代码
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务