按之字形顺序打印二叉树
按之字形顺序打印二叉树
http://www.nowcoder.com/questionTerminal/91b69814117f4e8097390d107d2efbe0
双对列,一个是从左到右,另一个是从右到左,再奇偶打印
/*
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> > ans;
if(!pRoot)
{
return ans;
}
queue<TreeNode*> lq;
queue<TreeNode*> rq;
lq.push(pRoot);
rq.push(pRoot);
int count = 0;
while(lq.size())
{
count++;
vector<int> v;
int len = lq.size();
for(int i=0;i<len;i++)
{
TreeNode* ltemp=lq.front();
TreeNode* rtemp=rq.front();
if(count%2==1)
v.push_back(ltemp->val);
else
v.push_back(rtemp->val);
lq.pop();
rq.pop();
if(ltemp->left)
lq.push(ltemp->left);
if(ltemp->right)
lq.push(ltemp->right);
if(rtemp->right)
rq.push(rtemp->right);
if(rtemp->left)
rq.push(rtemp->left);
}
ans.push_back(v);
}
return ans;
}
};