题解 | 把二叉树打印成多行

把二叉树打印成多行

https://www.nowcoder.com/practice/445c44d982d04483b04a54f298796288

/**
 * struct TreeNode {
 *	int val;
 *	struct TreeNode *left;
 *	struct TreeNode *right;
 *	TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 * };
 */
class Solution {
public:
    vector<vector<int> > Print(TreeNode* pRoot) {
        if(!pRoot){
            return {};
        }

        vector< vector<int> >  ans;

        queue< TreeNode* > q;
        q.push(pRoot);
        int size = 1;

        while(!q.empty()){
            int new_size=0;
            vector< int > temp;
            while( size>0 ){  //一层的处理
                TreeNode* node = q.front();q.pop();
                temp.push_back(node->val);
 
                if(node->left){   //已经假设队列里不放空指针了,开始就不能放,开始就得判断
                    q.push(node->left);
                    new_size++;
                }

                if(node->right){
                    q.push(node->right);
                    new_size++;
                }

                size--;
            }
            ans.push_back(temp); //一层完成之后,加入
            size = new_size;
        }

        return ans;
    }
};

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-15 17:32
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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