把二叉树打印成多行
题目描述
从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
解题思路
- 借助队列来实现
- 因为要按层打印,所以要计数当前队列中的节点个数,表示处于同一层的节点个数,实现按行打印。
class Solution {
public:
vector<vector<int> > Print(TreeNode* pRoot) {
vector<vector<int>>ans;
vector<int>tmp;
if(pRoot==NULL) return ans;
queue<TreeNode *>q;
q.push(pRoot);
while(!q.empty()){
int len=q.size();
while(len--){
TreeNode *now=q.front();
q.pop();
tmp.push_back(now->val);
if(now->left) q.push(now->left);
if(now->right) q.push(now->right);
}
ans.push_back(tmp);
tmp.clear();
}
return ans;
}
};