您将获得一个双向链表,除了下一个和前一个指针之外,它还有一个子指针,可能指向单独的双向链表。这些子列表可能有一个或多个自己的子项,依此类推,生成多级数据结构,如下面的示例所示。
扁平化列表,使所有结点出现在单级双链表中。您将获得列表第一级的头部。
示例:
1 | 输入: |
以上示例的说明:
给出以下多级双向链表:
我们应该返回如下所示的扁平双向链表:
方法一:递归
1 | """ |
为了寻找子链表的尾节点,上述方法需要重复遍历子链表。为了解决该问题,递归时可以直接返回尾节点:
1 | """ |
该方法的时间复杂度:O(n),空间复杂度:O(n)。
方法二:迭代
1 | """ |
该方法的时间复杂度:O(n),空间复杂度:O(n)。