题目描述
从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
思路:把上题的打印成之字形的根据层数决定是否逆转去掉就行。
/*
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) {
vector<vector<int>> vv;
vector<int> v;
queue<TreeNode*> q;
if(!pRoot) return vv;
TreeNode* last = pRoot,*c,*lastc;
q.push(pRoot);
int i = 0,value = 0;
while(!q.empty())
{
while(!q.empty()&&q.front()!=last)
{
c = q.front();
value = c->val;
v.push_back(value);
if(c->left) q.push(c->left);
if(c->right) q.push(c->right);
q.pop();
}
if(q.front()==last)
{
v.push_back(last->val);
if(last->left)
{
q.push(last->left);
lastc = last->left;
}
if(last->right)
{
q.push(last->right);
lastc = last->right;
}
q.pop();
last = lastc;
}
i++;
vv.push_back(v);
v.clear();
}
return vv;
}
};