当前位置:网站首页>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
边栏推荐
- 2022年贵州省职业院校技能大赛中职组网络安全赛项规程
- Introduction and experience of wazuh open source host security solution
- Educational codeforces round 109 (rated for Div. 2) C. robot collisions D. armchairs
- F - Two Exam(AtCoder Beginner Contest 238)
- Educational Codeforces Round 116 (Rated for Div. 2) E. Arena
- Wazuh開源主機安全解决方案的簡介與使用體驗
- In this indifferent world, light crying
- Mysql database (I)
- Add level control and logger level control of Solon logging plug-in
- Wazuh开源主机安全解决方案的简介与使用体验
猜你喜欢

Little known skills of Task Manager

剑指 Offer 35.复杂链表的复制
![R language [import and export of dataset]](/img/5e/a15ab692a6f049f846024c98820fbb.png)
R language [import and export of dataset]

Smart construction site "hydropower energy consumption online monitoring system"

Sword finger offer 09 Implementing queues with two stacks

Sword finger offer 05 Replace spaces

剑指 Offer 53 - II. 0~n-1中缺失的数字

Wazuh开源主机安全解决方案的简介与使用体验

How to adjust bugs in general projects ----- take you through the whole process by hand

Implement a fixed capacity stack
随机推荐
Support multi-mode polymorphic gbase 8C database continuous innovation and heavy upgrade
Codeforces Round #732 (Div. 2) D. AquaMoon and Chess
YOLOv5-Shufflenetv2
游戏商城毕业设计
Over fitting and regularization
Find a good teaching video for Solon framework test (Solon, lightweight application development framework)
How to adjust bugs in general projects ----- take you through the whole process by hand
Personal developed penetration testing tool Satania v1.2 update
EOJ 2021.10 E. XOR tree
In this indifferent world, light crying
Web APIs DOM node
Sword finger offer 05 Replace spaces
Use of room database
Daily question 2013 Detect square
PC寄存器
Configuration and startup of kubedm series-02-kubelet
Mysql database (I)
Implement an iterative stack
The sum of the unique elements of the daily question
Maximum number of "balloons"