Flatten a Multilevel Doubly Linked List LeetCode solution in C++

1
class Solution {
2
public:
3
Node *flatten(Node *head) {
4
if (head == NULL) return head;
5
Node *temp = head;
6
stack<Node *> stk;
7
while (temp->next != NULL || temp->child != NULL || stk.size() != 0) {
8
if (temp->next == NULL && temp->child == NULL && stk.size()) {
9
Node *a = stk.top();
10
stk.pop();
11
temp->next = a;
12
a->prev = temp;
13
}
14
if (temp->child != NULL) {
15
if (temp->next != NULL) {
16
Node *a = temp->next;
17
a->prev = NULL;
18
stk.push(a);
19
}
20
temp->next = temp->child;
21
temp->next->prev = temp;
22
temp->child = NULL;
23
}
24
temp = temp->next;
25
}
26
return head;
27
}
28
};
29
Feel free to ask in doubt in comment section

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0