-
题目链接 https://leetcode-cn.com/problems/flatten-a-multilevel-doubly-linked-list/
-
题目描述
-
您将获得一个双向链表,除了下一个和前一个指针之外,它还有一个子指针,可能指向单独的双向链表。这些子列表可能有一个或多个自己的子项,依此类推,生成多级数据结构,如下面的示例所示。
扁平化列表,使所有结点出现在单级双链表中。您将获得列表第一级的头部。
-
输入: 1---2---3---4---5---6--NULL | 7---8---9---10--NULL | 11--12--NULL 输出: 1-2-3-7-8-11-12-9-10-4-5-6-NULL
-
-
解题思路
- 因为对child的操作和节点自己一样,可以递归,遍历链表,当遇到一个具有child的节点的时候,进入递归调用,返回child链表的最后一个值,用于连接下一个节点
-
代码
- python
class Solution: def flatten(self, head): res = head def helper(head): while head and (head.next or head.child): while head and head.next and not head.child: head = head.next if head.child: tmp1 = head.next head.next = head.child head.next.prev = head head.child = None tmp2 = helper(head.next) if tmp1: tmp2.next = tmp1 tmp1.prev = tmp2 head = tmp1 return head helper(head) return res
- python
leetcode 430. 扁平化多级双向链表
猜你喜欢
转载自blog.csdn.net/qq_38043440/article/details/89331531
今日推荐
周排行