欢迎光临散文网 会员登陆 & 注册

算法: 从上到下打印二叉树

2022-08-11 17:08 作者:做架构师不做框架师  | 我要投稿


从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。

示例

给定二叉树: [3,9,20,null,null,15,7],


3

/ \

9 20

/ \

15 7

返回其层次遍历结果:


[

[3],

[9,20],

[15,7]

]

提示

  • 节点总数 <= 1000


方法:分层遍历+BFS

  • 特例处理:当树的根节点为空,则直接返回空列表

  • 初始化:初始返回的结果列表,并把根节点放入到队列中

  • 循环遍历:

  • 根据每层的叶子节点个数遍历,注意这有个细节就是“int i = queue.size()”,因为节点出栈,节点的大小是可变的

  • 节点出队

  • 添加到层集合中

  • 左/子节点非空时,入队,用于下层遍历

  • 本层遍历结束后,把层集合放入到结果列表中

  • 终止条件:返回结果列表


流程如下两个图所示。

代码如下:

复杂度分析

  • 时间复杂度:O(n),叶子结点出队和入队一次。

  • 空间复杂度:O(n),叶子结点的数量。


END

好兄弟可以点赞并关注我的公众号“javaAnswer”,全部都是干货。

业精于勤荒于嬉,行成于思毁于随,赠友人。


算法: 从上到下打印二叉树的评论 (共 条)

分享到微博请遵守国家法律