题目地址:牛客网
题目:
从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
示例1
输入
{8,6,10,5,7,9,11}
返回值
[[8],[6,10],[5,7,9,11]]
思路:
普普通通层次遍历。
原本输出挺麻烦的,但是看到一个大佬写的,原来可以vector套vector输出,很简洁。直接看代码吧。
代码:
/*
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
TreeNode(int x) :
val(x), left(NULL), right(NULL) {
}
};
*/
class Solution {
public:
vector<vector<int> > Print(TreeNode* pRoot) {
TreeNode* p=pRoot;
queue<TreeNode*> q;
vector<vector<int> > v;
if(p==NULL)return v;
q.push(p);
while(!q.empty())
{
vector<int> vv;
int f=0,l=q.size();
while(f++<l){
p=q.front();
q.pop();
vv.push_back(p->val);
if(p->left)q.push(p->left);
if(p->right)q.push(p->right);
}
v.push_back(vv);
}
return v;
}
};