二叉树层次遍历
🎈 作者:Linux猿
🎈 简介:CSDN博客专家🏆,华为云享专家🏆,Linux、C/C++、云计算、物联网、面试、刷题、算法尽管咨询我,关注我,有问题私聊!
🎈 关注专栏: 数据结构和算法成神路【精讲】优质好文持续更新中……🚀🚀🚀
🎈 欢迎小伙伴们点赞👍、收藏⭐、留言💬
二叉树层次遍历是一种常见的二叉树遍历算法,通常使用广度优先搜索来实现,下面来看一下吧!
一、题目描述
给定一棵二叉树的根节点 root ,返回其节点值的层序遍历。(即逐层地,从左到右访问所有节点)。
提示:
树中节点数目在范围 [0, 2000] 内;
-1000 <= Node.val <= 1000;
二、测试样例
输入:root = [3,9,20,null,null,15,7]
输出:[[3],[9,20],[15,7]]
其中,第一层的结点为 [3] ,第二层的结点为 [9,20],第三层的结点为[15,7]。
三、算法思路
本题考查二叉树的层次遍历,可以通过「广度优先搜索」算法实现。
因为题目要求按层输出,所以在使用「广度优先搜索」算法的时候,需要区分二叉树的不同层,这里使用 pair 将结点与所在的层进行绑定,如果是子节点,则将在父节点层的基础上层数加 1。
四、代码实现
测试输出为:
五、复杂度分析
5.1 时间复杂度
时间复杂度:O(n),n 为二叉树结点数,每一个结点访问一次,所以时间复杂度为 O(n)。
5.2 空间复杂度
空间复杂度:O(n),在上述算法中,用到了一个队列,队列最深不超过 n,所以空间复杂度为O(n)。
六、总结
需要理解二叉树层次遍历的原理,掌握广度优先搜索算法,只需要对算法进行些许更改即可。
🎈 作者:Linux猿
🎈 简介:CSDN博客专家🏆,华为云享专家🏆,Linux、C/C++、云计算、物联网、面试、刷题、算法尽管咨询我,关注我,有问题私聊!
🎈 关注专栏: 数据结构和算法成神路【精讲】优质好文持续更新中……🚀🚀🚀
🎈 欢迎小伙伴们点赞👍、收藏⭐、留言💬
- 点赞
- 收藏
- 关注作者
评论(0)