博客
关于我
力扣 - 430. 扁平化多级双向链表
阅读量:440 次
发布时间:2019-03-06

本文共 1477 字,大约阅读时间需要 4 分钟。

为了将多级双向链表扁平化为单级链表,我们可以采用深度优先搜索的方法,维护一个预处理指针(pre),将每个节点依次连接到链表中。具体步骤如下:

  • 初始化预处理指针pre 初始化为 null
  • 遍历链表:从链表的头节点开始,逐个节点处理。
  • 连接当前节点:如果 pre 不为空,将当前节点连接到 pre 的后面。
  • 处理子链表:如果当前节点有子链表,递归处理子链表,并将子链表的节点依次连接到 pre 后面。
  • 继续处理下一个节点:处理完子链表后,继续处理当前节点的下一个节点。
  • 以下是实现代码:

    class Solution {    private Node pre = null;    public Node flatten(Node head) {        if (head == null) return null;        pre = null;        while (head != null) {            // 记录下一个节点            Node next = head.next;            // 当前节点的连接            if (pre != null) {                pre.next = head;                head.prev = pre;            }            pre = head;            // 处理子链表            if (head.child != null) {                Node currentChild = head.child;                while (currentChild != null) {                    // 将当前节点连接到pre后面                    if (pre != null) {                        pre.next = currentChild;                        currentChild.prev = pre;                    }                    pre = currentChild;                    // 记录下一个节点                    Node nextChild = currentChild.next;                    // 处理下一个节点                    currentChild = nextChild;                }            }            // 继续处理下一个节点            head = next;        }        return head;    }}

    代码解释

    • 初始化预处理指针pre 用于记录链表的上一个节点。
    • 遍历链表:使用 while 循环从头节点开始处理。
    • 连接当前节点:如果 pre 不为空,将当前节点连接到链表的后面。
    • 处理子链表:如果当前节点有子链表,使用 while 循环依次连接每个子节点到链表中。
    • 继续处理下一个节点:处理完子链表后,继续处理当前节点的下一个节点。

    这种方法确保了每个节点都被正确连接到链表中,生成一个扁平化的双向链表。

    转载地址:http://snpyz.baihongyu.com/

    你可能感兴趣的文章
    Nvidia Cudatoolkit 与 Conda Cudatoolkit
    查看>>
    NVIDIA GPU 的状态信息输出,由 `nvidia-smi` 命令生成
    查看>>
    NVIDIA-cuda-cudnn下载地址
    查看>>
    nvidia-htop 使用教程
    查看>>
    nvidia-smi 参数详解
    查看>>
    Nvidia驱动失效,采用官方的方法重装更快
    查看>>
    nvm切换node版本
    查看>>
    nvm安装以后,node -v npm 等命令提示不是内部或外部命令 node多版本控制管理 node多版本随意切换
    查看>>
    ny540 奇怪的排序 简单题
    查看>>
    NYOJ 1066 CO-PRIME(数论)
    查看>>
    nyoj------203三国志
    查看>>
    nyoj58 最少步数
    查看>>
    OAuth2 + Gateway统一认证一步步实现(公司项目能直接使用),密码模式&授权码模式
    查看>>
    OAuth2 Provider 项目常见问题解决方案
    查看>>
    Vue.js 学习总结(14)—— Vue3 为什么推荐使用 ref 而不是 reactive
    查看>>
    oauth2-shiro 添加 redis 实现版本
    查看>>
    OAuth2.0_JWT令牌-生成令牌和校验令牌_Spring Security OAuth2.0认证授权---springcloud工作笔记148
    查看>>
    OAuth2.0_JWT令牌介绍_Spring Security OAuth2.0认证授权---springcloud工作笔记147
    查看>>
    OAuth2.0_介绍_Spring Security OAuth2.0认证授权---springcloud工作笔记137
    查看>>
    OAuth2.0_完善环境配置_把资源微服务客户端信息_授权码存入到数据库_Spring Security OAuth2.0认证授权---springcloud工作笔记149
    查看>>