114. 二叉树展开为链表

题目:给你二叉树的根结点 root ,请你将它展开为一个单链表:

  • 展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左子指针始终为 null 。
  • 展开后的单链表应该与二叉树 先序遍历 顺序相同。

方法一:先铺开再更新Tree

/*** Definition for a binary tree node.* function TreeNode(val, left, right) {*     this.val = (val===undefined ? 0 : val)*     this.left = (left===undefined ? null : left)*     this.right = (right===undefined ? null : right)* }*/
/*** @param {TreeNode} root* @return {void} Do not return anything, modify root in-place instead.*/var flatten = function(root) {const list = [];preorderTraversal(root,list);const size = list.length;for(let i = 1;i < size;i++){const pre = list[i-1],cur = list[i];pre.left = null;pre.right = cur;}
};const preorderTraversal = (root,list) =>{if(root!==null){list.push(root);preorderTraversal(root.left,list);preorderTraversal(root.right,list);}
}
/*** Definition for a binary tree node.* function TreeNode(val, left, right) {*     this.val = (val===undefined ? 0 : val)*     this.left = (left===undefined ? null : left)*     this.right = (right===undefined ? null : right)* }*/
/*** @param {TreeNode} root* @return {void} Do not return anything, modify root in-place instead.*/
var flatten = function(root) {//迭代法平铺数组//迭代前序遍历需要用到栈const list = [];const stack = [];let node = root;while(node!==null||stack.length){while(node !== null){list.push(node);stack.push(node);node = node.left;}node = stack.pop();node = node.right;}const size = list.length;for (let i = 1; i < size; i++) {const prev = list[i - 1], curr = list[i];prev.left = null;prev.right = curr;}
};

方法二:迭代加栈实现一边遍历一边更新

用栈保存丢失的左右孩子的信息。

/*** Definition for a binary tree node.* function TreeNode(val, left, right) {*     this.val = (val===undefined ? 0 : val)*     this.left = (left===undefined ? null : left)*     this.right = (right===undefined ? null : right)* }*/
/*** @param {TreeNode} root* @return {void} Do not return anything, modify root in-place instead.*/
var flatten = function(root) {//一边遍历,一边更新Treeif(root===null){return;}const stack = [];stack.push(root);let pre = null;while(stack.length){const cur = stack.pop();if(pre !== null){pre.left = null;pre.right = cur;}const left = cur.left,right = cur.right;if(right !== null){stack.push(right);}if(left!==null){stack.push(left);}pre = cur;}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/96091.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/96091.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Langchain系列三】GraphGPT——LangChain+NebulaGraph+llm构建智能图数据库问答系统

Langchain二次开发专栏 【Langchain系列一】常用大模型的key获取与连接方式 【Langchain系列二】LangChain+Prompt +LLM智能问答入门 【Langchain系列三】GraphGPT——LangChain+NebulaGraph+llm构建智能图数据库问答系统 【Langchain系列四】RAG——基于非结构化数据库的智能问…

【GNSS定位原理及算法杂记6】​​​​​​PPP(精密单点定位)原理,RTK/PPK/PPP区别讨论

PPP 技术详解&#xff1a;原理、流程与 RTK/PPK 对比 在高精度 GNSS 定位技术体系中&#xff0c;除了 RTK 和 PPK 以外&#xff0c;还有一类无需基站即可实现分米到厘米级定位的方法 —— PPP&#xff08;Precise Point Positioning&#xff0c;精密单点定位&#xff09;。它以…

LeetCode 837.新 21 点:动态规划+滑动窗口

【LetMeFly】837.新 21 点&#xff1a;动态规划滑动窗口 力扣题目链接&#xff1a;https://leetcode.cn/problems/new-21-game/ 爱丽丝参与一个大致基于纸牌游戏 “21点” 规则的游戏&#xff0c;描述如下&#xff1a; 爱丽丝以 0 分开始&#xff0c;并在她的得分少于 k 分时…

Codeforces 盒装苹果

题目来源&#xff1a;问题 - 2107B - Codeforces 这道题其实只需要判断两个要点&#xff0c;首先判断一下最大值-1后与最小值的差值是否>k&#xff0c;这里有个小细节&#xff0c;当有多个最大值时&#xff0c;可以先将一个最大值-1后再排序&#xff0c;判断新数组最大值与最…

数据结构--------堆

目录 二叉树 树的概念与结构 非树形结构&#xff1a; 注意&#xff1a; 树的相关术语 树的表示 孩子兄弟表示法 树形结构实际运用场景&#xff08;拓展&#xff09; 1. 文件系统管理 2. 数据库与索引 3. 编程语言与数据结构 信息组织与展示 1. 思维导图 2. 目录与…

VSCode Cursor 大模型 插件扩展 Kilo Code 配置

1.1 概述 Kilo Code 是一个 VSCode Cursor 插件扩展&#xff0c;提供了对多种 AI 模型的支持&#xff0c;包括 Claude Code 和 Qwen3。通过正确配置 Kilo Code&#xff0c;可以在开发过程中获得更好的 AI 辅助编程体验。 Kilo使用文档&#xff1a;https://kilocode.ai/docs/zh-…

深入解析:Unity、Unreal Engine与Godot引擎中的Uniform变量管理

在现代游戏开发中&#xff0c;Uniform变量是实现高质量图形渲染的关键元素。不同游戏引擎对Uniform变量的管理方式有所不同&#xff0c;了解这些差异可以帮助开发者在选择引擎时做出更明智的决策。本文将深入探讨Unity、Unreal Engine和Godot引擎中Uniform变量的管理方式&#…

遨游旅游天地,开启探索未知的梦幻之旅

你是否也怀揣着一颗对世界充满好奇的心&#xff0c;渴望踏上探索旅游世界的奇妙旅程&#xff1f;旅游&#xff0c;是一场与未知的邂逅&#xff0c;是心灵的一次自由翱翔。想象一下&#xff0c;你置身于神秘莫测的撒哈拉沙漠。当夕阳的余晖洒在连绵起伏的沙丘上&#xff0c;那金…

SConscript 脚本入门教程

第一章&#xff1a;什么是 SCons 和 SConscript&#xff1f;核心概念SCons 是一个现代化的构建工具&#xff0c;用于自动化软件构建过程&#xff0c;类似于 Make 但功能更强大、语法更简洁。SConstruct&#xff1a;是 SCons 的主配置文件&#xff0c;通常在项目根目录&#xff…

【深度学习】PyTorch从0到1——手写你的第一个卷积神经网络模型,AI模型开发全过程实战

引言本次准备建立一个卷积神经网络模型&#xff0c;用于区分鸟和飞机&#xff0c;并从CIFAR-10数据集中选出所有鸟和飞机作为本次的数据集。以此为例&#xff0c;介绍一个神经网络模型从数据集准备、数据归一化处理、模型网络函数定义、模型训练、结果验证、模型文件保存&#…

云计算核心技术之容器技术

一、容器技术 1.1、为什么需要容器 在使用虚拟化一段时间后&#xff0c;发现它存在一些问题&#xff1a;不同的用户&#xff0c;有时候只是希望运行各自的一些简单程序&#xff0c;跑一个小进程。为了不相互影响&#xff0c;就要建立虚拟机。如果建虚拟机&#xff0c;显然浪费就…

微信小程序通过uni.chooseLocation打开地图选择位置,相关设置及可能出现的问题

前言 uni.chooseLocation打开地图选择位置&#xff0c;看官方文档介绍的比较简单&#xff0c;但是需要注意的细节不少&#xff0c;如果没有注意可能就无法使用该API或者报错&#xff0c;下面就把详细的配置方法做一下介绍。 一、勾选位置接口 ①在uniapp项目根目录找到manif…

从财务整合到患者管理:德国医疗集团 Asklepios完成 SAP S/4HANA 全链条升级路径

目录 挑战 解决方案 详细信息 Asklepios成立于1985年&#xff0c;目前拥有约170家医疗机构&#xff0c;是德国大型私营诊所运营商。Asklepios是希腊和罗马神话中的医神。 挑战 Asklepios希望进一步扩大其作为数字医疗保健集团的地位。2020年9月&#xff0c;该公司与SNP合作…

高频PCB厂家及工艺能力分析

一、技术领先型厂商&#xff08;适合高复杂度、高可靠性设计&#xff09;这类厂商在高频材料处理、超精密加工和信号完整性控制方面具备深厚积累&#xff0c;尤其适合军工、卫星通信、医疗设备等严苛场景&#xff1a;深南电路&#xff1a;在超高层板和射频PCB领域是行业标杆&am…

AJAX 与 ASP 的融合:技术深度解析与应用

AJAX 与 ASP 的融合:技术深度解析与应用 引言 随着互联网技术的不断发展,AJAX(Asynchronous JavaScript and XML)和ASP(Active Server Pages)技术逐渐成为构建动态网页和应用程序的重要工具。本文将深入探讨AJAX与ASP的融合,分析其原理、应用场景以及在实际开发中的优…

MuMu模拟器Pro Mac 安卓手机平板模拟器(Mac中文)

原文地址&#xff1a;MuMu模拟器Pro Mac 安卓手机平板模拟器 MuMu模拟器 Pro mac版&#xff0c;是一款MuMuPlayer安卓模拟器&#xff0c;可以畅快运行安卓游戏和应用。 MuMu模拟器Pro搭载安卓12操作系统&#xff0c;极致释放设备性能&#xff0c;最高支持240帧画面效果&#…

Oracle维护指南

Part 1 Oracle 基础与架构#### **1.1 概述** - **Oracle 数据库版本历史与特性对比** - **版本演进**&#xff1a; - Oracle 8i&#xff08;1999&#xff09;&#xff1a;支持 Internet 应用&#xff0c;引入 Java 虚拟机&#xff08;JVM&#xff09;。 - Oracle 9i&#…

如何为PDF文件批量添加骑缝章?

骑缝章跨越多页文件的边缘加盖&#xff0c;一旦文件被替换其中某一页或顺序被打乱&#xff0c;印章就无法对齐&#xff0c;能立刻发现异常。这有效保障了文件的完整性和真实性。它是纯净免费&#xff0c;不带广告&#xff0c;专治各类PDF盖章需求。用法极简&#xff1a;文件直接…

组合时代的 TOGAF®:为模块化企业重新思考架构

随着企业努力追求敏捷性和创新性&#xff0c;组合性正逐渐成为一项基础性的设计原则。组合思维改变了企业交付能力的方式 —— 更倾向于采用模块化、独立的组件&#xff0c;这些组件可以快速组装和重组。本文探讨了长期以来作为企业架构框架的TOGAF标准如何演进以支持组合架构。…

电子元器件-电阻终篇:基本原理,电阻分类及特点,参数/手册详解,电阻作用及应用场景,电阻选型及实战案例

目录 一、基本原理 1.1 介绍 1.2 计算公式​编辑 1.3 单位 1.4 标称值 二、分类及特点 2.1电阻分类及特点介绍 2.2常用电阻器件详细介绍 三、参数/数据手册解读 3.1 阻值 3.2 封装&功率 3.3 精度 3.5 额定电压 3.6 温度系数(TCR) 3.7 扩展 四、作用与使用场…