把二叉树打印成多行
把二叉树打印成多行
http://www.nowcoder.com/questionTerminal/445c44d982d04483b04a54f298796288
从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
talk is cheap, show you c++ code
class Solution {
public:
vector<vector<int> > Print(TreeNode* pRoot) {
vector<vector<int>> ans;
if(!pRoot) return ans;
queue<TreeNode*> myq;主队列,纪录每一层需要输出的节点
myq.push(pRoot);
while(!myq.empty()){
vector<int> tmp_ans;
queue<TreeNode*> tmp_q;//辅助队列,纪录下一层节点
while(!myq.empty()){
TreeNode* tmp_node = myq.front();
tmp_ans.push_back(tmp_node->val);
myq.pop();
if(tmp_node->left) tmp_q.push(tmp_node->left);
if(tmp_node->right) tmp_q.push(tmp_node->right);
}
myq = tmp_q;//将下一层节点赋给主队列
ans.push_back(tmp_ans);
}
return ans;
}
};
查看2道真题和解析
