把二叉树打印成多行
把二叉树打印成多行
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; } };