Create flatten_list.py

This commit is contained in:
marina 2023-08-03 18:06:53 -07:00 committed by GitHub
parent 86d533c4bf
commit 18389003c4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -0,0 +1,40 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# author: bt3gl
class Node:
def __init__(self, val, prev, next, child):
self.val = val
self.prev = prev
self.next = next
self.child = child
def dfs(prev, node):
if not node:
return prev
node.prev = prev
prev.next = node
temp_next = node.next
last = dfs(node, node.child)
node.child = None
return dfs(last, temp_next)
def flatten(head):
if head is None:
return head
pseudo_head = Node(None, None, head, None)
dfs(pseudo_head, head)
pseudo_head.next.prev = None
return pseudo_head.next