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

leetcode114-二叉树展开为链表

leetcode 114

在这里插入图片描述

思路

用简单例子推导规律

不要一开始就看复杂的树,先从最简单的情况入手

案例一:只有一个节点
输入:1
输出:1

不需要任何操作,直接返回

案例二:有两个节点
输入:   1/2输出:1→2

步骤:

  • 把左子树(2)移到右边
  • 左子树指针设为 null
案例三:有三个节点
输入:   1/ \2   3输出:1→2→3

步骤:

  • 把左子树(2)移到右边
  • 找到新右子树(2)的最右节点
  • 把原右子树(3)接到最右节点后面

画出转换过程

原树:1/ \2   3第一步:移左子树到右边1\2/ \
null   3第二步:找到最右节点(2)1\2\3第三步:左指针设为null1\2\3

已经知道如何展开左子树和右子树,如何利用这些结果展开当前树?

分治思想

  • 先展开左子树(得到链表 A)
  • 再展开右子树(得到链表 B)
  • 把链表 A 接到根节点右边
  • 找到链表 A 的末尾
  • 把链表 B 接到 A 的末尾
const deep = (root) => {if (!root) return null;// 递归展开左子树const left = deep(root.left);// 递归展开右子树const right = deep(root.right);// 处理当前节点:将左子树放到右子树的位置};

如何实现 “移左接右” 操作

  • 保存原左右子树
  • 将左子树移到右子树位置
  • 找到新右子树的最右节点
  • 将原右子树接到最右节点
if (left) {root.right = left;root.left = null;// 寻找左子树的最右节点let cur = root;while (cur.right) {cur = cur.right;}// 将右子树连接到左子树的最右节点cur.right = right;}

实现

var flatten = function (root) {const deep = (root) => {if (!root) return null;// 递归展开左子树const left = deep(root.left);// 递归展开右子树const right = deep(root.right);// 处理当前节点:将左子树放到右子树的位置if (left) {root.right = left;root.left = null;// 寻找左子树的最右节点let cur = root;while (cur.right) {cur = cur.right;}// 将右子树连接到左子树的最右节点cur.right = right;}return root;};return deep(root);
};
http://www.lqws.cn/news/508915.html

相关文章:

  • 人机交互动画制作新突破!文本驱动扩散框架HOIDiNi:一句话驱动虚拟人高精度操作物体。
  • 美团小程序闪购 mtgsig1.2
  • 关于 Babel 编译后的 Generator 状态机结构解析
  • 读取ILA数据进行MATLAB分析
  • 软件行业如何权衡“统一规范“与“灵活创新“?
  • Vue.js 列表过滤实现详解(watch和computed实现)
  • PYTHON从入门到实践4-数据类型
  • 原子操作(CAS)
  • OSS跨区域复制灾备方案:华东1到华南1的数据同步与故障切换演练
  • 嵌入式开发学习日志Day8(ARM体系架构——按键、蜂鸣器及中断)
  • 【bug】searchxng搜索报错Searx API returned an error
  • Vue项目使用defer优化页面白屏,性能优化提升,秒加载!!!
  • java-SpringBoot框架开发计算器网页端编程练习项目【web版】
  • QT多线程
  • Git 子模块 (Submodule) 完全使用指南
  • 烟花爆竹生产企业库房存储安全风险预警系统
  • 【Pandas】pandas DataFrame update
  • 【Docker基础】Docker容器管理:docker stop详解
  • Vue.js:渐进式框架赋能现代Web开发
  • 蓝桥杯嵌入式学习(cubemxkeil5)
  • word中如何快速打出上标?
  • 20250624java面试总结
  • 第九节 CSS工程化-预处理技术对比
  • 大白话蓝牙中的RPC:Remote Procedure Call远程过程调用
  • 壁挂马桶品牌推荐:我的“瑞尔特瑞家HX5”沉浸式体验报告健康与洁净的硬核科技
  • 从设备自动化到智能管控:MES如何赋能牛奶饮料行业高效生产?
  • 2025年渗透测试面试题总结-2025年HW(护网面试) 10(题目+回答)
  • Flask(四) 模板渲染render_template
  • 用Rust写平衡三进制加法器
  • 调试HDMI音频能8通道播放声音