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

扁平化列表,使所有结点出现在单级双链表中。您将获得列表第一级的头部。

示例:

输入: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

以上示例的说明:

给出以下多级双向链表:

我们应该返回如下所示的扁平双向链表:

/*
// Definition for a Node.
class Node {
public:
    int val = NULL;
    Node* prev = NULL;
    Node* next = NULL;
    Node* child = NULL;

Node() {}

Node(int _val, Node* _prev, Node* _next, Node* _child) {
        val = _val;
        prev = _prev;
        next = _next;
        child = _child;
    }
};
*/
class Solution {
public:
    Node* flatten(Node* head) {
        helper(head, NULL);
        return head;
    }
    Node* helper(Node* cur, Node* prev){
        if(!cur) return NULL;
        cur->prev = prev;
        if(!cur->child){
            if(cur->next) return helper(cur->next, cur);
            return cur;
        }
        else{
            Node* child = cur->child;
            cur->child = NULL;
            Node* next = cur->next;
            Node* last = helper(child, cur);
            cur->next = child;
            if(next){
                last->next = next;
                return helper(next, last);
            }
            else{
                return last;
            }
        }
    }
};

430.扁平化多级双向链表相关推荐

  1. 430. 扁平化多级双向链表

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

  2. LeetCode 430. 扁平化多级双向链表(DFS)

    1. 题目 您将获得一个双向链表,除了下一个和前一个指针之外,它还有一个子指针,可能指向单独的双向链表.这些子列表可能有一个或多个自己的子项,依此类推,生成多级数据结构,如下面的示例所示. 扁平化列表 ...

  3. 430. Flatten a Multilevel Doubly Linked List | 430. 扁平化多级双向链表(DFS)

    题目 https://leetcode.com/problems/flatten-a-multilevel-doubly-linked-list/ 题解 思路不难,DFS. 指针操作比较坑,注意边界以 ...

  4. 【数据结构与算法】之深入解析“扁平化多级双向链表”的求解思路与算法示例

    一.题目要求 你会得到一个双链表,其中包含的节点有一个下一个指针.一个前一个指针和一个额外的子指针,这个子指针可能指向一个单独的双向链表,也包含这些特殊的节点.这些子列表可以有一个或多个自己的子列表, ...

  5. leetcode算法题--扁平化多级双向链表★

    原题链接:https://leetcode-cn.com/problems/flatten-a-multilevel-doubly-linked-list/ 1.DFS+递归 Node* flatte ...

  6. wxpython 按钮 扁平化_tensorflow tensor Flatten 张量扁平化,多通道转单通道数据

    slim.flatten(inputs,outputs_collections=None,scope=None) (注:import tensorflow.contrib.slim as slim) ...

  7. JAVA数组扁平化整合_数组扁平化的几种处理放法

    清明节,这几天放假闲来无事,好好研究一下基础知识,今天看看数组扁平化该怎么处理: 先来看数组扁平化是什么: var arr = [1,2,3,4,[5,6,[7,8]],true] => [1, ...

  8. SAP License:SAP实施应该建立扁平化组织结构

    扁平化组织是现代企业组织结构形式之一,这种组织结构形式改变了原来层级组织结构中的企业上下级组织和领导者之间的纵向联系方式,平级各单位之间的横向联系方式以及组织体与外部各方面的联系方式等.扁平化组织结构 ...

  9. ps手机计算机图标教程,PS手机图标绘制教程:手绘时尚大方的扁平化风格手机APP图标。PS-站长资讯中心...

    PS手机图标绘制教程:手绘时尚大方的扁平化风格手机APP图标.初稿 步骤 02 制作时钟底盘 2.1 新建540*540px的圆,命名为[圆-1]并为其添加图层样式. 2.2 新建460*460px的 ...

  10. 2021年大数据常用语言Scala(二十三):函数式编程 扁平化映射 flatMap

    目录 扁平化映射 | flatMap 定义 案例 扁平化映射  flatMap 扁平化映射也是将来用得非常多的操作,也是必须要掌握的. 定义 可以把flatMap,理解为先map,然后再flatten ...

最新文章

  1. Nginx内存池--pool代码抽取(链表套路)
  2. uk visa application(bachelor at uk,physically at home,graduate studies uk)
  3. php zval_copy_static_var(),深入理解 PHP7 中全新的 zval 容器和引用计数机制
  4. mysql变更AUTO_INCREMENT值
  5. 数据库SQL,技巧篇
  6. FreeRTOS任务基础知识
  7. 目前市场上的电脑一体机从计算机种类,一体机电脑与普通电脑的区别
  8. STL源码剖析 关联式容器 树 红黑树、二叉搜索树、平衡二叉搜索树
  9. 什么是序列化,怎么序列化,为什么序列化,反序列化会遇到什么问题,如何解决。...
  10. 左手代码,右手带娃,还能发十几篇 paper,程序员女神是如何炼成的?
  11. 亲自动手用HTK实现YES NO孤立词识别
  12. .ani动态鼠标指针图像无法显示
  13. 昂达v891w可以用u盘linux,拆机小能手——ONDA 昂达 V891w CH 双系统电脑国产平板 拆解清灰!...
  14. 深度学习面试题:计算机视觉训练技巧
  15. 敬你一杯酒,从此莫回头。往事归零,爱恨随意。我干杯,你随意
  16. LVGL:模拟器仿真
  17. python dynamic
  18. 腾讯qq空间GET登陆JS分析
  19. EMR 上的 Spark 或 Hive 作业失败并出现 HTTP 503 “Slow Down” AmazonS3Exception
  20. iPhone帮帮忙(全彩)

热门文章

  1. 【直播预告】云栖社区特邀专家蒋泽银:Jpom一款低侵入式Java运维、监控软件...
  2. 《JavaScript高效图形编程(修订版)》——导读
  3. php类型之class类,对象,构造函数的理解
  4. ganglia分布式监控系统
  5. ApacheHttpServer出现启动报错:the requested operation has failed解决办法
  6. 使用Junit对Android应用进行单元测试
  7. atol、atoll、atof函数
  8. JavaScript 中常用的弹窗
  9. python中列表实现去重使用_Python对list列表结构中的值进行去重的方法总结
  10. Keras下使用多GPU训练模型