二叉树展开为链表的三种写法

二叉树展开为链表

在这里插入图片描述

链表头节点法
新建一个树形链表,前序遍历这个树,遍历到一个节点就往里插

class Solution {TreeNode dummyNode = new TreeNode(0,null,null);TreeNode p = dummyNode;public void flatten(TreeNode root) {if(root == null) return;//线序遍历这个树,然后往里插就完事了TreeNode l = root.left;TreeNode r = root.right;p.right = root;p.right.left = null;p=p.right;flatten(l);flatten(r);//再指回去root = dummyNode.right;}
}

连接法
每次找左子树最右的节点,然后连接即可

class Solution {//每一次找左子树最右的节点,然后连接public void flatten(TreeNode root) {TreeNode cur = root;while(cur!=null){if(cur.left!=null){TreeNode leftMaxRight = cur.left;while(leftMaxRight.right!=null)leftMaxRight = leftMaxRight.right;leftMaxRight.right = cur.right;cur.right = cur.left;cur.left =null;    }cur = cur.right;}}
}

倒着前序遍历法
这里有一种非常好的思路,就是在类里面定义一个变量,这个变量作为全局的变量,所有递归都能访问到,这样子就可以找到这个递归前一个节点了。

class Solution {TreeNode preNode;public void flatten(TreeNode root) {if(root==null) return ;flatten(root.right);flatten(root.left);root.left = null;root.right = preNode;preNode = root;}
}

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

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

相关文章

【动态规划】LeetCode-746LCR 088.使用最小花费爬楼梯

🎈算法那些事专栏说明:这是一个记录刷题日常的专栏,每个文章标题前都会写明这道题使用的算法。专栏每日计划至少更新1道题目,在这立下Flag🚩 🏠个人主页:Jammingpro 📕专栏链接&…

微软 Power Platform 零基础 Power Pages 网页搭建教程学习实践(一)

微软 Power Platform 零基础 Power Pages 网页搭建教程学习实践 Power Pages 网页搭建 微软 Power Platform 零基础 Power Pages 网页搭建教程学习实践1、Power Pages 介绍2、开始创建一个站点3、选择一个合适的模板4、编辑我们的模板5、面向专业开发人员的高级开发功能6、预览…

深搜回溯剪枝优化策略-全排列II

LCR 084. 全排列 II - 力扣(LeetCode) 这道题的主体思想和之前讲过的全排列是相似的,不同的是思考的角度要侧重于剪枝方向,所以可以通过这道题对剪枝思想的进一步扩展; 通过题意,可以知道,在上一…

STM32CubeIDE(CUBE-MX hal库)----蓝牙模块HC-05(详细配置)

系列文章目录 STM32CubeIDE(CUBE-MX hal库)----初尝点亮小灯 STM32CubeIDE(CUBE-MX hal库)----按键控制 STM32CubeIDE(CUBE-MX hal库)----串口通信 STM32CubeIDE(CUBE-MX hal库)----定时器 文章目录 系列文章目录前言一、蓝牙配置二、CUBE-MX可视化配置三、蓝牙APP调试助手四、…

HarmonyOS开发(八):动画及网络

1、动画概述 在ArkUI中,产生动画的方式是改变组件属性值并且指定相关的动画参数。当属性值发生变化后,按照动画参数,从原来的状态过渡到新的状态,就形成一个动画。 动画的相关参数如下: 属性名称 属性类型 默认值 …

解压指定路径下的压缩文件(zip),将相同名字的数据(csv)合并到一起

import os import zipfile import pandas as pddef merge_csv_files(zip_folder, output_folder):# 确保输出文件夹存在if not os.path.exists(output_folder):os.makedirs(output_folder)# 遍历指定路径下的所有zip文件for zip_file in os.listdir(zip_folder):if zip_file.en…

C语言KR圣经笔记 4.1函数基础

第4章 函数 函数将大的计算任务拆分成小份,还能让我们在他人已完成的基础上开发,而不必从头开始。恰当的函数隐藏了程序中那些不需要知道操作细节的部分,这样就使整体更加清晰,并且能减少修改的痛苦。 C的设计使得函数的使用高效…

2023-12-01 事业-代号s-引流技巧和营销思路

摘要: 2023-12-01 事业-代号s-引流技巧和营销思路 引流技巧和营销思路 独立站流量渠道主要有以下几种:1、CPC付费广告:搜索引擎、社交平台、广告联盟平台。2、网红营销:youtube、INS、博客论文、TT直播。适合比较时尚品类3、Affiliate促销网站:优惠券折扣网站发布产品优惠…

miot-plugin-sdk. npm install安装失败

miot-plugin-sdk-npm install安装失败 最紧公司要开发一台智能设备,经过同事的对比,选中了米家作为云平台,于是,我就负责开发app界面端,根据官方文档教程 下载了miot-plugin-sdk 程序,准备开始开发,结果悲…

PMIC : 一颗芯片解决N多问题

1、什么是PMIC Power Management Integrated Circuit(PMIC)中文是电源管理集成电路,主要特点是高集成度,将传统的多路输出电源封装在一颗芯片内,使得多电源应用场景高效率更高,体积更小。 PMIC 是当今电子…

嵌入式基础电路设计和常用芯片用法

文章目录 一、基础电路1. 按键电路2. 晶振电路3. 降压电路 二、常见芯片1. SN74HC244PWR2. TLP23623. ACS7244. LM3585. EL357-NB6. SMBJ30CA 一、基础电路 1. 按键电路 观察以上电路可知: 在按键SW1不按下的时候引脚BTN1是接着3V3的,所以默认为高电平…

windows判断端口是否在使用的bat脚本

脚本 REM 查询端口是否占用 netstat -ano|findstr 3306 >nul &&echo y >1.log ||echo n >1.log REM 读取文本内容赋值给变量 set /P resu<1.log if %resu% y (echo port in use ) else (echo port not in use ) mysql服务不运行的时候检测效果 mysql服…

Linux体系架构----Linux根目录下常见一级子目录的作用

文章目录 Linux 根目录下的一级子目录扮演着重要的角色&#xff0c;每个子目录都有其特定的作用和功能。以下是常见的 Linux 根目录下一级子目录及其作用&#xff1a; /bin&#xff08;Binary&#xff09;&#xff1a; 作用&#xff1a;存放系统启动和恢复所需的基本命令&#…

基于SpringBoot高校心理教育辅导设计与实现

摘 要 随着Internet技术的发展&#xff0c;心理教育辅导系统应运而生&#xff0c;心理教育辅导系统为用户提供了一个更为便利的心理测试咨询平台。所以&#xff0c;为了充分满足高校学生心理教育辅导的需求&#xff0c;特开发了本高校心理教育辅导系统。 本高校心理教育辅导系统…

【华为OD题库-050】树状结构查询-java

题目 通常使用多行的节点、父节点表示—棵树&#xff0c;比如: 西安 陕西 陕西 中国 江西 中国 中国 亚洲 泰国 亚洲 输入一个节点之后&#xff0c;请打印出来树中他的所有下层节点 输入描述 第一行输入行数&#xff0c;下面是多行数据&#xff0c;每行以空格区分节点和父节点 …

真实的软件测试日常工作是咋样的?

最近很多粉丝问我&#xff0c;小姐姐&#xff0c;现在大环境不景气&#xff0c;传统行业不好做了&#xff0c;想转行软件测试&#xff0c;想知道软件测试日常工作是咋样的&#xff1f;平常的工作内容是什么&#xff1f; 别急&#xff0c;今天跟大家细细说一下一个合格的软件测…

WordPress:解决xmlrpc.php被扫描爆破的风险

使用WordPress的朋友都知道&#xff0c;一些【垃圾渣渣】会利用xmlrpc.php文件来进行攻击&#xff0c;绕过WP后台错误登录次数限制进行爆破。虽然密码复杂的极难爆破&#xff0c;但及其占用服务器资源。 方法一、利用宝塔防火墙&#xff08;收费版&#xff09; 一般可以直接使…

springboot(ssm电影播放平台 在线电影系统Java(codeLW)

springboot(ssm电影播放平台 在线电影系统Java(code&LW) 开发语言&#xff1a;Java 框架&#xff1a;ssm/springboot vue JDK版本&#xff1a;JDK1.8&#xff08;或11&#xff09; 服务器&#xff1a;tomcat 数据库&#xff1a;mysql 5.7&#xff08;或8.0&#xff09…

MySQL锁篇

目录 一、MySQL中的锁 1.1、全局锁 1.2、表级锁 1.2.1、表锁 1.2.2、元数据锁&#xff08;MDL&#xff09; 1.2.3、意向锁 1.2.4、AUTO-INC 锁 1.3、行级锁 1.3.2、Gap Lock 1.3.3、Next-Key Lock 1.3.4、插入意向锁 二、MySQL 是怎么加锁的&#xff1f; 2.1、为什…

2312skia,11管理颜色及下载等

管理颜色 Skia使用的所有颜色空间,通过如何从该颜色空间,转换为叫XYZD50的通用"连接"颜色空间,来描述自己.可从相同描述中,推导出如何从XYZD50空间转换回原颜色空间. XYZD50是像RGB一样以三维表示的颜色空间,但XYZ部分则根本不像RGB,而是这些通道的线性混杂.Y最接近…