把二叉树打印成多行

把二叉树打印成多行

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

相关推荐

03-10 14:19
已编辑
重庆邮电大学 前端工程师
球Offer上岸👑:测试也难求一面 逆天
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务