把二叉树打印成多行

把二叉树打印成多行

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;
        }
};
全部评论

相关推荐

专业嗎喽:个人信息名字太大,合到电话邮箱那一栏就行,有党员写过党,剩下其他全删,站空太大了 把实习经历丰富,放最前面,然后是个人评价,技能之类的,然后是学校信息。项目经历最后面,可以就选一个自己擅长的。 现在是学校不是92就扣分的,没必要放前面。 然后现在看重实习经历>竞赛经历(校园经历)>课程项目经历
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务