当前位置:网站首页>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
边栏推荐
- CF1634E Fair Share
- Corridor and bridge distribution (csp-s-2021-t1) popular problem solution
- 动漫评分数据分析与可视化 与 IT行业招聘数据分析与可视化
- Simply sort out the types of sockets
- EOJ 2021.10 E. XOR tree
- Animation scoring data analysis and visualization and it industry recruitment data analysis and visualization
- Personal developed penetration testing tool Satania v1.2 update
- Daily question 2013 Detect square
- 6. Logistic model
- 剑指 Offer 35.复杂链表的复制
猜你喜欢

The connection and solution between the shortest Hamilton path and the traveling salesman problem

Solution to game 10 of the personal field

Sword finger offer 06 Print linked list from beginning to end

剑指 Offer 35.复杂链表的复制

lxml. etree. XMLSyntaxError: Opening and ending tag mismatch: meta line 6 and head, line 8, column 8

Typical use cases for knapsacks, queues, and stacks

读者写者模型

剑指 Offer 05. 替换空格
![R language [import and export of dataset]](/img/5e/a15ab692a6f049f846024c98820fbb.png)
R language [import and export of dataset]

剑指 Offer 09. 用两个栈实现队列
随机推荐
每日一题-无重复字符的最长子串
lxml. etree. XMLSyntaxError: Opening and ending tag mismatch: meta line 6 and head, line 8, column 8
剑指 Offer 05. 替换空格
2022年贵州省职业院校技能大赛中职组网络安全赛项规程
Common optimization methods
Introduction et expérience de wazuh open source host Security Solution
Warning using room database: schema export directory is not provided to the annotation processor so we cannot export
Alu logic operation unit
浅谈JVM(面试常考)
Fried chicken nuggets and fifa22
全排列的代码 (递归写法)
2017 USP Try-outs C. Coprimes
Use of room database
Drawing dynamic 3D circle with pure C language
In this indifferent world, light crying
Haut OJ 1401: praise energy
Find a good teaching video for Solon framework test (Solon, lightweight application development framework)
[jailhouse article] jailhouse hypervisor
Codeforces Round #716 (Div. 2) D. Cut and Stick
Over fitting and regularization