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

#include <algorithm>
#include <vector>
#include <deque>
//思路,这不就一个层序遍历的事。两个队列来回倒,以便确认这一层什么时候结束。没了。
class Solution {
  public:
    deque<TreeNode*>q;
    deque<TreeNode*>temp;
    vector<vector<int> > Print(TreeNode* pRoot) {
        vector<vector<int> >result;
        vector<int>OneLayer;
        if (pRoot == nullptr)
            return result;
        q.push_back(pRoot);
        while (!q.empty()) {
            TreeNode* current = q.front();
            q.pop_front();

            OneLayer.push_back(current->val);
            if (current->left)temp.push_back(current->left);
            if (current->right)temp.push_back(current->right);
            if (q.empty()) {//这层结束的标志,队列为空
                if (!temp.empty()) {//把下一层的子节点倒过来,当然,也可能pop_front出来的这个节点它没有子节点,那就没的copy了。
                    copy(temp.begin(), temp.end(), std::back_inserter(q));
                }
                temp.clear();
                result.push_back(OneLayer);
                OneLayer.clear();
            }
        }
        return result;
    }

};

全部评论
老哥学的代码随想录吗
点赞 回复 分享
发布于 2023-05-12 17:56 湖北

相关推荐

头像 会员标识
昨天 17:08
已编辑
牛客_产品运营部_私域运营
腾讯 普通offer 24k~26k * 15,年包在36w~39w左右。
点赞 评论 收藏
分享
10-14 23:01
已编辑
中国地质大学(武汉) Java
CUG芝士圈:虽然是网上的项目,但最好还是包装一下,然后现在大部分公司都在忙校招,十月底、十一月初会好找一些。最后,boss才沟通100家,别焦虑,我去年暑假找第一段实习的时候沟通了500➕才有面试,校友加油
点赞 评论 收藏
分享
头像
11-21 11:39
四川大学 Java
是红鸢啊:忘了还没结束,还有字节的5k 违约金
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务