把二叉树打印成多行

题目描述

从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
 vector<vector<int>> Print(TreeNode* pRoot) {
        vector<vector<int>> res;
        if(!pRoot)
            return res;
        
        vector<int> ivec;
        int tmp,cnt = 1;
        
        queue<TreeNode *>q;
        q.push(pRoot);
        
        while(!q.empty()){
            tmp = cnt;
            ivec.clear();
            cnt = 0;
            while(tmp--){
                ivec.push_back(q.front()->val);
                if(q.front()->left){
                    q.push(q.front()->left);
                    cnt++;
                }
                
                if(q.front()->right){
                    q.push(q.front()->right);
                    cnt++;
                }             
                q.pop();
            }
            res.push_back(ivec);
        }
        
        return res;
    }

 

posted on 2017-02-28 10:31  123_123  阅读(91)  评论(0编辑  收藏  举报