微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

LeetCode 117. 填充每个节点的下一个右侧节点指针 II **

具体思想:

层序BFS,这个事自己没想到的。。

自己想用DFS,但是8太行,在向下子树连接的时候,会有问题;

具体思想就是每一层按照next当链表建立,链接下一层的next即可;

注意dummy节点可以有效减少pre的遍历难度;

具体代码

/*
// DeFinition for a Node.
class Node {
public:
    int val;
    Node* left;
    Node* right;
    Node* next;

    Node() : val(0), left(NULL), right(NULL), next(NULL) {}

    Node(int _val) : val(_val), left(NULL), right(NULL), next(NULL) {}

    Node(int _val, Node* _left, Node* _right, Node* _next)
        : val(_val), left(_left), right(_right), next(_next) {}
};
*/

class Solution {
public:
    Node* connect(Node* root) {
        if(!root)
            return NULL;
        Node* cur=root;
        while(cur){
            Node* dum=new Node(-1);
            Node* pre=dum;
            while(cur){
                if(cur->left){
                    pre->next=cur->left;
                    pre=cur->left;
                }
                if(cur->right){
                    pre->next=cur->right;
                    pre=cur->right;
                }
                cur=cur->next;
            }
            cur=dum->next;
        }
        return root;
    }
};

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐