题目要求
题解
https://github.com/soulmachine/leetcode
递归
class Solution {
public:
Node* connect(Node* root) {
if(!root) return root;
Node dummy(-1);
for(Node *cur=root,*pre=&dummy;cur;cur=cur->next){
if(cur->left){
pre->next=cur->left;
pre=pre->next;
}
if(cur->right){
pre->next=cur->right;
pre=pre->next;
}
}
connect(dummy.next);
return root;
}
};
迭代
class Solution {
public:
Node* connect(Node* root) {
Node *cur=root;
while(cur){
Node *next=nullptr;
Node *pre=nullptr;
for(;cur;cur=cur->next){
if(!next) next=cur->left?cur->left:cur->right;
if(cur->left){
if(pre) pre->next=cur->left;
pre=cur->left;
}
if(cur->right){
if(pre) pre->next=cur->right;
pre=cur->right;
}
}
cur=next;
}
return root;
}
};