题目
https://oj.leetcode.com/problems/binary-tree-level-order-traversal-ii/
分析
和Binary Tree Level Order Traversal一样, 只不过在最后把结果反转一下就行了。
代码
class Solution
{
public:
vector<vector<int>> levelOrderBottom(TreeNode *root)
{
queue<TreeNode*> nodeQue;
queue<int> depQue;
TreeNode *node;
int dep;
int depBefore;
vector<vector<int>> res;
vector<int> solution;
if (!root)
return res;
nodeQue.push(root);
depQue.push(1);
depBefore = 1;
while (!nodeQue.empty())
{
node = nodeQue.front();
nodeQue.pop();
dep = depQue.front();
depQue.pop();
if (dep == depBefore)
solution.push_back(node->val);
else
{
res.push_back(solution);
depBefore = dep;
solution.clear();
solution.push_back(node->val);
}
if (node->left)
{
nodeQue.push(node->left);
depQue.push(dep + 1);
}
if (node->right)
{
nodeQue.push(node->right);
depQue.push(dep + 1);
}
}
res.push_back(solution);
reverse(res.begin(), res.end());
return res;
}
};

本文介绍了一种实现二叉树层次遍历的算法,并针对LeetCode上的Binary Tree Level Order Traversal II问题提供了解决方案。该算法通过广度优先搜索遍历二叉树的每一层,并将结果按层次顺序收集到列表中,最后反转整个列表以得到从底向上的层次遍历结果。
4406

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



