LeetCode107.二叉树的层序遍历II

力扣题目链接:https://leetcode.cn/problems/binary-tree-level-order-traversal/

题目叙述:

给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)

步骤:

其实,这道题和二叉树的层序遍历区别不大!如果不会二叉树的层序遍历的话,可以翻看我之前的二叉树的层序遍历的文章,里面详细讲解了层序遍历的过程

二叉树的层序遍历:https://www.cnblogs.com/Tomorrowland/articles/18314740

只是在最后翻转一下result数组就可以了!

具体AC代码如下:

class Solution {
public:
vector<vector<int>> levelOrderBottom(TreeNode* root) {
//定义二维数组,作为返回结果
vector<vector<int>> result;
//根节点为空,就直接返回空数组
if (root == NULL) return result;
//定义模拟队列
queue<TreeNode*> que;
//根节点入队
que.push(root);
while (!que.empty()) {
//记录每一层的操作次数
int size = que.size();
//使用current数组来存储每一层遍历的结果
vector<int> current;
//每一层循环size次就可以了
while(size--) {
//取队头元素
TreeNode* node = que.front();
//队头元素出队
que.pop();
//将每一层遍历的元素放入current数组中
current.push_back(node->val);
//看左孩子是否为空,不为空就将左孩子入队
if (node->left != nullptr) que.push(node->left);
if (node->right != nullptr) que.push(node->right);
}
//将current数组放入二维数组当中
result.push_back(current);
}
//最后,返回翻转这个二维数组并返回就可以了!
reverse(result.begin(), result.end());
return result;
}
};
posted @   Tomorrowland_D  阅读(9)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示