如果直接是层次遍历的话比较容易,关键是每层要分开输出,所以采用每层计数的方法输出,具体代码如下:
/**
* Definition for binary tree
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
vector<vector<int> > levelOrder(TreeNode *root) {
TreeNode *p=root;
vector<vector<int> > level;
if(p==NULL) return level;
int count=1;
queue<TreeNode *> que;
que.push(p);
while(!que.empty())
{
int nextcunt=0;
vector<int> tmps;
for(int i=0;i<count;i++)
{
p=que.front();
tmps.push_back(p->val);
que.pop();
if(p->left!=NULL)
{
que.push(p->left);
nextcunt++;
}
if(p->right!=NULL)
{
que.push(p->right);
nextcunt++;
}
}
level.push_back(tmps);
count=nextcunt;
}
return level;
}
};