当前位置: 首页 > news >正文

LCR 028

题目:LCR 028


解法一:深度优先搜索

遍历链表,若某节点存在子链,则遍历子链,遍历完后,返回子链最后一个节点 last,将 last 与当前链表的 next 相连

    public Node flatten(Node head) {dfs(head);return head;}public Node dfs(Node head) {Node cur = head, last = null, next = null;while (cur != null) {last = cur;next = cur.next;//连接孩子节点,更新last,并把last和next相连if (cur.child != null) {//连接childcur.next = cur.child;cur.child.prev = cur;//获取子链尾节点last = dfs(cur.child);//将子节点置空cur.child = null;//将子链尾节点和下一个节点相连last.next = next;if (next != null) next.prev = last;}//此处不能用cur=cur.next,因为此时cur的next已经被修改为孩子节点cur = next;}return last;}

注意

  • next为空时,只需要将lastnext指针指向next,不需要将nextprev指针指向last

  • 扁平化子链后,需要将child节点置空,否则测试不通过



http://www.mrgr.cn/news/35474.html

相关文章:

  • Window下PHP安装最新sg11(php5.3-php8.3)
  • Spring框架之策略模式 (Strategy Pattern)
  • [OpenGL]使用OpenGL实现硬阴影效果
  • rust智能指针
  • 7.4、实验四:RIPv2 认证和触发式更新
  • Ceph后端两种存储引擎介绍
  • 字符串哈希
  • 2-102基于matlab的蒙特卡洛仿真
  • 考研数据结构——C语言实现小顶堆
  • SpringBoot基础知识
  • string 的介绍及使用
  • C++语言桌面应用开发GTK3 Gtkmm3 Glade
  • 在Java中如何利用ClassLoader动态加密、解密Class文件
  • 面经宝典【1】-拼多多
  • 插入、更新与删除MySQL记录
  • Python 入门教程(7)面向对象 | 7.5、继承
  • Docker部署服务:快速入门指南
  • opencv学习笔记(一)
  • Vue3——Vite篇
  • rmdir :删除空文件夹
  • Stable Diffusion绘画 | XYZ Plot:让对比一目了然
  • 优青博导团队指导-组蛋白甲基化修饰、实验设计、实验结果分析、测序分析及SCI论文辅助,精准高效,为农医学科研保驾护航!
  • 前端——阿里图标的使用
  • USB 电缆中的信号线 DP、DM 的缩写由来
  • 8086的指令系统
  • 物联网实践教程:微信小程序结合OneNET平台MQTT实现STM32单片机远程智能控制 远程上报和接收数据——汇总