解題思路 :
就是基本的 BFS 思路 利用 queue 來完成 level order traversal 然後把結果一層一層存到 result 中 最後在 reverse 整個 result 可使用內建的 reverse function
C++ code :
<pre><code>
class Solution {
/**
* @param root : The root of binary tree.
* @return : buttom-up level order a list of lists of integer
*/
public:
vector<vector<int>> levelOrderBottom(TreeNode *root) {
// write your code here
vector<vector<int>> res;
if(root != nullptr)
{
vector<int> v;
queue<TreeNode*> Q;
Q.push(root);
while(!Q.empty())
{
int n = Q.size();
for(int i = 0; i < n; i++)
{
TreeNode *tmp = Q.front();
Q.pop();
v.emplace_back(tmp->val);
if(tmp->left) Q.push(tmp->left);
if(tmp->right) Q.push(tmp->right);
}
res.emplace_back(v);
v.clear();
}
reverse(res.begin(), res.end());
}
return res;
}
};