blob: d977321adb780f2c771ba78ba5df4397359b4847 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
#include "leetcode.h"
class Solution {
public:
Node *connect(Node *root) {
Node *currParent = root, *baseChild, *currChild, *nextChild;
while (currParent) {
while (currParent->next && !currParent->left && !currParent->right)
currParent = currParent->next;
currChild = baseChild =
currParent->left ? currParent->left : currParent->right;
while (currChild) {
if (currParent->right && currChild != currParent->right)
nextChild = currParent->right;
else {
currParent = currParent->next;
while (currParent && !currParent->left && !currParent->right)
currParent = currParent->next;
nextChild = currParent ? currParent->left ? currParent->left
: currParent->right
: currParent;
}
currChild->next = nextChild;
currChild = nextChild;
}
currParent = baseChild;
}
return root;
}
};
int main() {}
|