题解 | #把二叉树打印成多行#
把二叉树打印成多行
http://www.nowcoder.com/practice/445c44d982d04483b04a54f298796288
采用两个队列完成,交替保存每一行。跟剑指offer-按之字形顺序打印二叉树 https://www.nowcoder.com/practice/91b69814117f4e8097390d107d2efbe0?tab=note很像。那道题用到两个栈 class Solution { public: vector<vector > Print(TreeNode* pRoot) { vector<vector> result;
if(pRoot==nullptr) return result;
queue<TreeNode*> q1,q2;
q1.push(pRoot);
while(q1.size()||q2.size()){
TreeNode* cur=NULL;
vector<int> ret1,ret2;
while(!q1.empty()){
cur=q1.front();
if(cur->left)
q2.push(cur->left);
if(cur->right)
q2.push(cur->right);
ret1.push_back(q1.front()->val);
q1.pop();
}
if(ret1.size())
result.push_back(ret1);
while(!q2.empty()){
cur=q2.front();
if(cur->left)
q1.push(cur->left);
if(cur->right)
q1.push(cur->right);
ret2.push_back(q2.front()->val);
q2.pop();
}
if(ret2.size())
result.push_back(ret2);
}
return result;
}
};