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

把二叉树打印成多行

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

class Solution{
private:
    int nodeCount = 1;

public:
    std::vector<std::vector<int>> Print(TreeNode* pRoot){
        std::vector<std::vector<int>> resultVec;
        if(pRoot == nullptr) return resultVec;

        TreeNode* current;
        std::queue<TreeNode*> q;
        std::vector<TreeNode*> nodeVec;
        std::vector<int> valVec;
        q.push(pRoot);

        while (!q.empty())
        {
            while(nodeCount){
                current = q.front();
                q.pop();
                nodeCount--;
                valVec.push_back(current->val);
                nodeVec.push_back(current);
            }

            resultVec.push_back(valVec);

            for(int i=0; i<nodeVec.size(); i++)
            {
                if(nodeVec[i]->left != nullptr){
                    q.push(nodeVec[i]->left);
                    nodeCount++;
                }
                if(nodeVec[i]->right != nullptr){
                    q.push(nodeVec[i]->right);
                    nodeCount++;
                }
            }
            std::vector<TreeNode*>().swap(nodeVec);
            std::vector<int>().swap(valVec);
        }
        return resultVec;
    }
};

全部评论

相关推荐

明天不下雨了:这个项目 这个简历 这个模板 莫不是一个开源的
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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