当前位置:网站首页>LeetCode 0107.二叉树的层序遍历II - 另一种方法
LeetCode 0107.二叉树的层序遍历II - 另一种方法
2022-07-05 05:45:00 【Tisfy】
【LetMeFly】107.二叉树的层序遍历 II
力扣题目链接:https://leetcode.cn/problems/binary-tree-level-order-traversal-ii/
给你二叉树的根节点 root
,返回其节点值 自底向上的层序遍历 。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)
示例 1:
输入:root = [3,9,20,null,null,15,7] 输出:[[15,7],[9,20],[3]]
示例 2:
输入:root = [1] 输出:[[1]]
示例 3:
输入:root = [] 输出:[]
提示:
- 树中节点数目在范围
[0, 2000]
内 -1000 <= Node.val <= 1000
方法一:优先队列
与之前方法不同,这次决定不使用pair<TreeNode*, int>
,而是直接使用TreeNode*
入队。
看不懂的可以先看之前这篇博客:https://letmefly.blog.csdn.net/article/details/125584554
那么,没有了int
类型的层数,怎么判断哪些节点是属于同一层的呢?
其实也很简单,我们在队列不空的时候,记录下来队列中一共由多少个元素,这些元素的个数就是当前最后一层的节点的个数。
然后,我们用一个循环,把这些元素全都添加到答案的同一层中(同时把子节点入队)即可。
- 时间复杂度 O ( N ) O(N) O(N),其中 N N N是节点个数。
- 空间复杂度 O ( N 2 ) O(N2) O(N2),其中 N 2 N2 N2是节点最多的一层的节点数。
AC代码
C++
class Solution {
public:
vector<vector<int>> levelOrderBottom(TreeNode* root) {
vector<vector<int>> ans;
queue<TreeNode*> q;
if (root)
q.push(root);
int layer = -1;
while (q.size()) {
ans.push_back({
});
layer++;
int thisLayerNum = q.size();
while (thisLayerNum--) {
TreeNode* thisNode = q.front();
q.pop();
ans[layer].push_back(thisNode->val);
if (thisNode->left)
q.push(thisNode->left);
if (thisNode->right)
q.push(thisNode->right);
}
}
reverse(ans.begin(), ans.end()); // 注意,这里是本题要求从最后一层开始遍历,所以reverse了以下。正常情况下的层次遍历是不需要reverse的
return ans;
}
};
同步发文于CSDN,原创不易,转载请附上原文链接哦~
Tisfy:https://letmefly.blog.csdn.net/article/details/125610699
边栏推荐
- 网络工程师考核的一些常见的问题:WLAN、BGP、交换机
- 每日一题-搜索二维矩阵ps二维数组的查找
- Dichotomy, discretization, etc
- After setting up the database and website When you open the app for testing, it shows that the server is being maintained
- 剑指 Offer 06.从头到尾打印链表
- How many checks does kubedm series-01-preflight have
- Talking about JVM (frequent interview)
- Sword finger offer 05 Replace spaces
- 2022 极术通讯-Arm 虚拟硬件加速物联网软件开发
- 游戏商城毕业设计
猜你喜欢
【Jailhouse 文章】Look Mum, no VM Exits
CF1637E Best Pair
Corridor and bridge distribution (csp-s-2021-t1) popular problem solution
Solution to game 10 of the personal field
Support multi-mode polymorphic gbase 8C database continuous innovation and heavy upgrade
Sword finger offer 58 - ii Rotate string left
2017 USP Try-outs C. Coprimes
6. Logistic model
CF1634 F. Fibonacci Additions
Typical use cases for knapsacks, queues, and stacks
随机推荐
Time of process
过拟合与正则化
Support multi-mode polymorphic gbase 8C database continuous innovation and heavy upgrade
Educational Codeforces Round 116 (Rated for Div. 2) E. Arena
Wazuh开源主机安全解决方案的简介与使用体验
R language [import and export of dataset]
Chapter 6 data flow modeling - after class exercises
How to adjust bugs in general projects ----- take you through the whole process by hand
Sword finger offer 53 - ii Missing numbers from 0 to n-1
sync. Interpretation of mutex source code
Sword finger offer 09 Implementing queues with two stacks
[article de jailhouse] jailhouse hypervisor
使用Electron开发桌面应用
中职网络安全技能竞赛——广西区赛中间件渗透测试教程文章
剑指 Offer 05. 替换空格
[cloud native] record of feign custom configuration of microservices
Introduction and experience of wazuh open source host security solution
浅谈JVM(面试常考)
Personal developed penetration testing tool Satania v1.2 update
【Jailhouse 文章】Jailhouse Hypervisor