107. 二叉树的层序遍历 II
难度:中等
给定一个二叉树,返回其节点值自底向上的层序遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)
class Solution {
public:
vector<vector<int>> levelOrderBottom(TreeNode* root) {
vector<vector<int>> res;
if(!root)return res;
vector<int> v;
queue<TreeNode*> q;
q.push(root);
TreeNode *cur;
int size;
while(!q.empty()){
size = q.size();
while(size--){
cur = q.front();
q.pop();
v.push_back(cur->val);
if(cur->left)q.push(cur->left);
if(cur->right)q.push(cur->right);
}
res.push_back(v);
v.clear();
}
reverse(res.begin(),res.end());
return res;
}
};
执行结果:
通过
执行用时:
4 ms, 在所有 C++ 提交中击败了73.41%的用户
内存消耗:
12.2 MB, 在所有 C++ 提交中击败了68.50%的用户
通过测试用例:
34 / 34
这篇博客介绍了如何使用C++实现一个中等难度的算法问题——二叉树的自底向上层序遍历。通过创建一个队列,逐层遍历并记录节点值,最后将结果反向输出,从而达到自底向上的遍历效果。代码执行效率高,内存占用少,通过了所有测试用例。
169

被折叠的 条评论
为什么被折叠?



