欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

树-leetcode#116-填充每个节点的下一个右侧节点指针

程序员文章站 2022-03-03 11:01:05
...
class Solution {
public:
    Node* connect(Node* root) {
       if(root==NULL) return root;
       queue<Node*> q;
       q.push(root);
       while(!q.empty()){
           int nextlevel = q.size();
           Node * pre=NULL;
           Node * cur=NULL;
           while(nextlevel>0){
                Node * cur = q.front();
                cur->next=NULL;
                if(pre!=NULL) pre->next=cur;
                q.pop();
                if(cur->left) q.push(cur->left);
                if(cur->right) q.push(cur->right);
                pre = cur;
                nextlevel--;
           }
       } 
       return root;
    }
};

层次遍历,每层需要处理的节点个数就是队列的长度,循环,把前一个的next指向后一个,这里不要忘记,cur的next先置为空。

相关标签: leetcode