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;
    }
};
上一篇:Spring学习(二)


下一篇:吃掉LeetCode之2022/2/22