https://leetcode-cn.com/problems/populating-next-right-pointers-in-each-node-ii/ (通用解)
class Solution {
public:
Node* connect(Node* root) {
Node *cur = root;
while(cur)
{
Node dummy;
dummy.next = NULL;
Node *tail = &dummy;
//遍历当前层
while(cur)
{
if (cur->left)
{
tail->next = cur->left;
tail = tail->next;
}
if (cur->right)
{
tail->next = cur->right;
tail = tail->next;
}
cur = cur->next;
}
//进入下一层
cur = dummy.next;
}
return root;
}
};
https://leetcode-cn.com/problems/populating-next-right-pointers-in-each-node/ (完美二叉树)
class Solution {
public:
Node* connect(Node* root) {
if (root == NULL) return NULL;
Node *start = root;
Node *cur = NULL;
while(start->left)
{
cur = start;
while(cur)
{
cur->left->next = cur->right;
if (cur->next) cur->right->next = cur->next->left;
cur = cur->next;
}
start = start->left;
}
return root;
}
};