zoukankan      html  css  js  c++  java
  • 每日一题力扣430

    多级双向链表中,除了指向下一个节点和前一个节点指针之外,它还有一个子链表指针,可能指向单独的双向链表。这些子列表也可能会有一个或多个自己的子项,依此类推,生成多级数据结构,如下面的示例所示。

    给你位于列表第一级的头节点,请你扁平化列表,使所有结点出现在单级双链表中。

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/flatten-a-multilevel-doubly-linked-list
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    class Solution:
        def flatten(self, head: 'Node') -> 'Node':
            if not head:return head
            dummy=Node(None,None,None,None)
            self.preNode=dummy
            def dfs(curNode:Node):#前序遍历
                if not curNode:return 
                left=curNode.child#左边为孩子节点
                right=curNode.next#右边为正常的链表
                curNode.child=None#将孩子节点置空
                self.preNode.next=curNode#先遍历中间的,创建下一个链接
                curNode.prev=self.preNode#创建前一个链接
                self.preNode=curNode#遍历中间的
                dfs(left)#然后遍历左边的
                dfs(right)#再遍历右边的
            
            dfs(head)
            res=dummy.next
            res.prev=None
            return res
  • 相关阅读:
    异或和之和
    Wannafly挑战赛19C:多彩的树
    HDU 6035 树形dp
    利用C++套接字发送邮件
    洛谷P3368树状模板(区间更新+单点查询+差分)
    CCF 201903-1 小中大
    关于树状数组
    CODEVS 4189 (前缀是否出现)
    关于字典树
    hdu 1022 Train Problem
  • 原文地址:https://www.cnblogs.com/liuxiangyan/p/14532199.html
Copyright © 2011-2022 走看看