美文网首页Leetcode
Leetcode 430. Flatten a Multilev

Leetcode 430. Flatten a Multilev

作者: SnailTyan | 来源:发表于2018-08-29 19:09 被阅读59次

    文章作者:Tyan
    博客:noahsnail.com  |  CSDN  |  简书

    1. Description

    Flatten a Multilevel Doubly Linked List

    2. Solution

    /*
    // Definition for a Node.
    class Node {
    public:
        int val = NULL;
        Node* prev = NULL;
        Node* next = NULL;
        Node* child = NULL;
    
        Node() {}
    
        Node(int _val, Node* _prev, Node* _next, Node* _child) {
            val = _val;
            prev = _prev;
            next = _next;
            child = _child;
        }
    };
    */
    class Solution {
    public:
        Node* flatten(Node* head) {
            stack<Node*> nodes;
            Node* current = head;
            Node* pre = nullptr;
            while(current) {
                if(current->child) {
                    if(current->next) {
                        nodes.push(current->next);
                    }
                    current->next = current->child;
                    current->next->prev = current;
                    current->child = nullptr;
                }
                pre = current;
                current = current->next;
                if(!current && !nodes.empty()) {
                    Node* temp = nodes.top();
                    nodes.pop();
                    pre->next = temp;
                    temp->prev = pre;
                    current = temp;
                }
            }
            return head;    
        }
    };
    

    Reference

    1. https://leetcode.com/problems/flatten-a-multilevel-doubly-linked-list/description/

    相关文章

      网友评论

        本文标题:Leetcode 430. Flatten a Multilev

        本文链接:https://www.haomeiwen.com/subject/agwkwftx.html