当前位置:网站首页>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
边栏推荐
- 挂起等待锁 vs 自旋锁(两者的使用场合)
- Time complexity and space complexity
- Csp-j-2020-excellent split multiple solutions
- Implement a fixed capacity stack
- One question per day 1447 Simplest fraction
- Graduation project of game mall
- Pointnet++ learning
- Configuration and startup of kubedm series-02-kubelet
- Sword finger offer 04 Search in two-dimensional array
- Control Unit 控制部件
猜你喜欢
![R language [import and export of dataset]](/img/5e/a15ab692a6f049f846024c98820fbb.png)
R language [import and export of dataset]

Solution to the palindrome string (Luogu p5041 haoi2009)

全排列的代码 (递归写法)
![[cloud native] record of feign custom configuration of microservices](/img/39/05cf7673155954c90e75a8a2eecd96.jpg)
[cloud native] record of feign custom configuration of microservices

Little known skills of Task Manager

Full Permutation Code (recursive writing)

Sword finger offer 53 - I. find the number I in the sorted array

Personal developed penetration testing tool Satania v1.2 update

Reader writer model

Dichotomy, discretization, etc
随机推荐
Daily question 2013 Detect square
剑指 Offer 05. 替换空格
SSH password free login settings and use scripts to SSH login and execute instructions
6. Logistic model
[jailhouse article] performance measurements for hypervisors on embedded ARM processors
“磐云杯”中职网络安全技能大赛A模块新题
Sword finger offer 04 Search in two-dimensional array
Zheng Qing 21 ACM is fun. (3) part of the problem solution and summary
剑指 Offer 53 - II. 0~n-1中缺失的数字
Maximum number of "balloons"
Haut OJ 1401: praise energy
R language [import and export of dataset]
Scope of inline symbol
卷积神经网络——卷积层
Zzulioj 1673: b: clever characters???
Find a good teaching video for Solon framework test (Solon, lightweight application development framework)
浅谈JVM(面试常考)
Individual game 12
Daily question - Search two-dimensional matrix PS two-dimensional array search
【实战技能】如何做好技术培训?