/**
* // 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
};