30 Day Challenge Day 1 | Leetcode 107. Binary Tree Level Order Traversal II
题解
这道题是Easy级别,算是BFS的典型题,适合用来找手感。
非常典型的套路是,用一个队列结构(queue)保存一层的信息,那么下一次迭代的时候,就可以通过队列先进先出的顺序,根据上一层的信息去操作。
class Solution {
public:
vector<vector<int>> levelOrderBottom(TreeNode* root) {
if (!root) return vector<vector<int>>();
vector<vector<int> > res;
queue<TreeNode*> q;
q.push(root);
while (!q.empty()) {
vector<int> level;
int size = q.size();
for (int i = 0; i < size; ++i) {
TreeNode* node = q.front();
q.pop();
level.push_back(node->val);
if (node->left) q.push(node->left);
if (node->right) q.push(node->right);
}
res.insert(res.begin(), level);
}
return res;
}
};