可参考前文:二叉树的层次遍历
剑指offer_t22_从上往下打印二叉树
本题在前题的基础上,只需要在遍历每层的时候,用当前队列的size控制循环,再用一个临时的vector存放每层的节点即可。
class Solution {
public:
vector<vector<int> > Print(TreeNode* pRoot) {
vector <vector<int>> result;
if(!pRoot) return result;
queue <TreeNode*> q;
q.push(pRoot);
while(q.size())
{
int n = q.size();
vector<int> per_result;
while(n--)
{
auto t = q.front();
per_result.push_back(t->val);
q.pop();
if(t->left) q.push(t->left);
if(t->right) q.push(t->right);
}
result.push_back(per_result);
}
return result;
}
};