编辑代码

/**
 * // Definition for a Node.
 * function Node(val,prev,next,child) {
 *    this.val = val;
 *    this.prev = prev;
 *    this.next = next;
 *    this.child = child;
 * };
 */

/**
 * @param {Node} head
 * @return {Node}
 */
var flatten = function(head) {
    let stack = []
    let p = head,tail
    while(p!=null||stack.length){
        if(p.child){
            stack.push(p.next)
            let child = p.child
            p.child = null
            p.next = child
            child.prev = p
            p=child
        }
        tail = p
        p = p.next
        if(p===null&&stack.length) 
        {
            p = stack.pop()
            tail.next = p
            p.prev = tail
        }
    }
    return head
};