题目:
从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
分析:
借助队列,将每一层放在对应二维数组下表中,当结点从队列中出来时,将下一层带进去,并且层数要在上一层的基础上加1
class Solution {
public:
vector<vector<int> > Print(TreeNode* pRoot) {
queue<pair<TreeNode*, int>> q;
vector<vector<int>> vv;
int i=0;
if(pRoot)
q.push({pRoot, i});
while(!q.empty())
{
pair<TreeNode* ,int> front=q.front();
TreeNode* node=front.first;
int index=front.second;
q.pop();
if(vv.size()<index+1)
vv.push_back({});
vv[index].push_back(node->val);
//带下一层进去
if(node->left)
q.push({node->left, index+1});
if(node->right)
q.push({node->right, index+1});
}
return vv;
}
};