Leetcode 107, Binary Tree Level Order Traversal II
按二叉树一层一层来输出数据,使用BFS来解决,问题的关键是要一层一层来解决,本来想要一个数字记录当前的层数,但是这样越想越麻烦,最后参照了solution里面的用队列的size来控制当前的层数,最后再使用reverse函数把顺序反转。
以下是代码:
class Solution {
public:
vector<vector<int>> levelOrderBottom(TreeNode* root) {
vector<vector <int>> res;
if(root == NULL) return res;
queue<TreeNode *> q;
q.push(root);
while(!q.empty()) {
vector<int> temp;
int s = q.size();
for (int i = 0; i < s; i++) {
TreeNode * t = q.front();
q.pop();
temp.push_back(t -> val);
if(t -> left != NULL) q.push(t -> left);
if(t -> right != NULL) q.push(t -> right);
}
res.push_back(temp);
}
reverse(res.begin(), res.end());
return res;
}
};