题解 | #填充每个节点指向最右节点的next指针#

填充每个节点指向最右节点的next指针

https://www.nowcoder.com/practice/fdbd05d647084fcf9be78444e231998b

/**
 * Definition for binary tree with next pointer.
 * struct TreeLinkNode {
 *  int val;
 *  TreeLinkNode *left, *right, *next;
 *  TreeLinkNode(int x) : val(x), left(NULL), right(NULL), next(NULL) {}
 * };
 */
#include <cstddef>
#include <queue>
class Solution {
  public:
    void connect(TreeLinkNode* root) {
        if (root == nullptr)
            return ;
        queue<TreeLinkNode*> qu;
        queue<TreeLinkNode*> jl;
        qu.push(root);
        bool hou = false;
        while (qu.size() > 0 || jl.size() > 0) {
            if (hou == false) {
                TreeLinkNode* t;
                t = qu.front();
                qu.pop();
                if (qu.size() == 0) {
                    t->next = nullptr;
                    hou = true;
                } else
                    t->next = qu.front();
                if (t->left != nullptr) {

                    jl.push(t->left);
                }
                if (t->right != nullptr) {

                    jl.push(t->right);
                }
            } else {
                TreeLinkNode* t;
                t = jl.front();
                jl.pop();
                if (jl.size() == 0) {
                    t->next = nullptr;
                    hou = false;
                } else
                    t->next = jl.front();
                if (t->left != nullptr) {

                    qu.push(t->left);
                }
                if (t->right != nullptr) {

                    qu.push(t->right);
                }
            }

        }
    }
};

全部评论

相关推荐

03-28 19:11
铜陵学院 C++
有礼貌的山羊追赶太阳:太典了,连笔试都没有开始就因为HC满了而结束了,而且还卡你不让你再投其他部门的。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务