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

--- 将二叉搜索树转化为排序的双向链表 ---

他会给一个二叉搜索树,要求把他改为排好序的双向循环列表,并放回最小的值

对于二叉搜索树可以知道 对他进行中序遍历可以有序的获取到树中的元素,所以可以使用中序遍历来解决排序的问题

而如何将他改为双向链表按

既然时改为双向链表,那么前一个节点必须要知道,所以使用一个prev指针来维护和当前节点的前后指向关系,而我又要放回头节点,所以还需要一个head来记录头节点

对于这棵树 前序遍历一直到 1 节点,会触发修改节点指向的逻辑

这时head 为空 prev 为空,该节点也为最小的节点 所以head == 1节点, 而prev呢

他代表的时1 前面的节点,应该让1 节点的前驱 left 指向prev 然后prev 走到 1 节点,而prev为啥不维护后驱 prev.right呢 为空的嘛

继续回溯

当root 为2 节点

有prev不为空,这时就需要维护后驱了,prev.right = 2节点, 维护前驱 root.right= prev,

prev = root

这样就维护俩个节点之间的双向连接

最后退出递归时

head指向的时头 prev指向的时尾

需要再维护这俩个节点的连接然他们成为循环 前驱head.left=prev , 后驱prev.right=head

class Solution { Node pre, head; public Node treeToDoublyList(Node root) { if(root == null) return null; dfs(root); head.left = pre; pre.right = head; return head; } void dfs(Node root){ if(root == null) return; dfs(root.left); if(pre == null){ head = root; }else{ //后继 pre.right = root; } //前驱 root.left = pre; pre = root; dfs(root.right); } }
http://www.cnnetsun.cn/news/1259.html

相关文章:

  • 产品中有哪些天才设计
  • 向量求导法
  • Elasticsearch下载地址及离线安装步骤
  • 当日总结(2025年12月10日)
  • 手写Tomcat代码整理(自用)
  • 雷科电力-REKE920S涂层测厚仪
  • 相机选型学习
  • 华为-AI智算网络学习-4 运维与监控实例
  • 华为-AI智算网络学习-3 fabriclnsight 监控运维平台
  • ABAP Console Reloaded:ADT 控制台与 CL_DEMO_OUTPUT 的合体进化
  • ABAP Platform 2021 让泛型与动态编程焕然一新:用新表达式告别 FIELD-SYMBOL 的年代感
  • 把 Client 当成 ABAP 系统的多租户底座:从 sy-mandt 到 CDS_CLIENT 的隔离机制与工程实践
  • CL_DEMO_OUTPUT 重新焕发活力:从 ABAP 7.56 SP01 起,把深层结构与对象实例一次性讲清楚、展示漂亮
  • 把 MANDT 锁进保险箱:ABAP Client Handling 与 Client Isolation(聚焦 AMDP 的 Client Safety )
  • 把租户关进自己的房间:ABAP Client Handling 与 Client Isolation(聚焦 CDS Table Function 与 AMDP)
  • 把客户端隔离讲透:ABAP 里的 Client Handling 从 ABAP SQL、CDS_CLIENT 到 Native SQL 风险控制
  • 别再在 HANA 里直查 CDS 了:ABAP-Managed Database Objects 与正确访问姿势全解
  • 从 F1 到 help.sap.com:ABAP 关键字文档迁移背后的门道与团队落地指南
  • 关于 SAP Fiori Frontend Server 从 standalone 到 embedded 模式的迁移之路
  • 人工智能模型组同学们的建议
  • “走马观碑”开源仓库
  • Docker中安装软件汇总(留存版)
  • StickerBaker零代码AI贴纸生成器快速部署指南
  • Step1X-Edit技术深度解析:智能图像编辑的推理革命
  • 5分钟零配置部署:QuickJS在工业边缘计算的完整实践指南
  • SegEarth-OV3: Exploring SAM 3 for Open-Vocabulary Semantic Segmentation in Remote Sensing Images
  • SAM 3: Segment Anything with Concepts
  • Docker实战指南:MySQL、Redis与C++环境的深度容器化部署
  • bat 批处理文件中 PowerShell 命令换行问题
  • java注解和反射(5)