把二叉树打印成多行

include

class Solution {
public:
vector<vector<int> > Print(TreeNode* pRoot) {
vector<vector<int> >res;
vector<int> rowRes; //每行的结果
queue<TreeNode*> que;</int></int></int>

        if(!pRoot)  //当结点为空时,直接返回
            return res;

        int A = 0;
        int B = 1;
        que.push(pRoot); //先把第一个结点放入队列
        while(B)//当队列内有值的时候
        {
            //A记录的时下一行的元素个数,每一轮向队列里扔元素的时候才++
            if(que.front()->left)
            {
                que.push(que.front()->left);
                A++; //
            }
            if(que.front()->right)
            {
                que.push(que.front()->right);
                A++; //
            }
            //每存完一个父节点的孩子,就把父节点pop(),并且
            rowRes.push_back(que.front()->val);
            que.pop();
            B--;
            if(!B)  //当B为0时,说明已经存完上一行的元素值了,开始进行下一行元素的存储
            {
                res.push_back(rowRes);
                rowRes.clear();
                B=A;  //此时B存入的说下一列的元素个数,若下一轮元素 
                A = 0;//下一轮循环开始
            }
        }
        return res;
    }

};

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务