题解 | #按之字形顺序打印二叉树#
按之字形顺序打印二叉树
http://www.nowcoder.com/practice/91b69814117f4e8097390d107d2efbe0
使用队列进行层次遍历,使用栈保存层次遍历的结点,isleft记录是否从左往右。
class Solution { public: vector<vector<int> > Print(TreeNode* pRoot) { vector<vector<int> > result; queue<TreeNode* > q; if(pRoot) q.push(pRoot); bool isleft=true; while(!q.empty()) { vector<int> v; stack<TreeNode *> s; while(!q.empty()) { TreeNode *p=q.front(); q.pop(); v.push_back(p->val); s.push(p); } while(!s.empty()) { TreeNode *p=s.top(); s.pop(); if(isleft) { if(p->right) q.push(p->right); if(p->left) q.push(p->left); }else { if(p->left) q.push(p->left); if(p->right) q.push(p->right); } } isleft=(isleft==true)?false:true; result.push_back(v); } return result; } };