Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Node* flatten(Node* head) {
- Node *cur = head;
- while (cur)
- {
- if (cur -> child == nullptr)
- {
- cur = cur -> next ;
- continue;
- }
- Node *end_cur_child = cur -> child;
- while (end_cur_child -> next != nullptr)
- {
- end_cur_child = end_cur_child -> next;
- }
- Node *save_next = cur -> next;
- cur -> next = cur -> child;
- cur -> child -> prev = cur;
- end_cur_child -> next = save_next;
- if (save_next)
- save_next -> prev = end_cur_child;
- cur -> child = nullptr;
- cur = cur -> next ;
- }
- return head;
- }
Advertisement
Add Comment
Please, Sign In to add comment