LeetCode刷题---二叉树展开为链表

在这里插入图片描述
官方题解:LeetCode官方题解

解题思想

当根节点不为空时,从二叉树根节点开始遍历
判断当前节点是否有左节点,如果不存在左节点,则当前节点向右移一位
如果存在左节点,创建辅助节点指向左节点,判断左节点是否有右节点,如果有右节点,则将辅助节点指向右节点,此时进行拼接操作,即将辅助节点的右节点指向当前节点的右节点,当前节点cur的右节点指向当前节点的左节点,且当前节点的左节点指向为Null
结束上述步骤之后,当前节点向右移一位,之后开始重新执行上述步骤

大致流程:
将左子树插入到右子树的地方
将原来的右子树接到左子树的最右边节点
考虑新的右子树的根节点,一直重复上边的过程,直到新的右子树为 null

代码:

public void flatten(TreeNode root) {
    while (root != null) { 
        //左子树为 null,直接考虑下一个节点
        if (root.left == null) {
            root = root.right;
        } else {
            // 找左子树最右边的节点
            TreeNode pre = root.left;
            while (pre.right != null) {
                pre = pre.right;
            } 
            //将原来的右子树接到左子树的最右边节点
            pre.right = root.right;
            // 将左子树插入到右子树的地方
            root.right = root.left;
            root.left = null;
            // 考虑下一个节点
            root = root.right;
        }
    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

万字长文讲解Golang pprof 的使用

往期好文推荐 ⭐️⭐️⭐️: # golang pprof 监控系列(1) —— go trace 统计原理与使用 # golang pprof监控系列(2) —— memory,block,mutex 使用 # golang pprof 监控系列(3) —— memory,block,mute…

第三百八十八回

文章目录 概念介绍使用方法示例代码 我们在上一章回中介绍了DateRangePickerDialog Widget相关的内容,本章回中将介绍Radio Widget.闲话休提,让我们一起Talk Flutter吧。 概念介绍 我们在这里说的Radio Widget是指单选按钮,没有选中时是圆形边框&#x…

小白在VMware Workstation Pro上安装部署SinoDB V16.8

一、安装环境说明 CPU:2核或以上,内存:2G或以上;磁盘10G或以上;网卡:千兆 1.1检查服务器内存大小 命令:free -m 1.2检查服务器磁盘空间大小 命令:df -h 1.3检查服务器网络配置信息 命…

Python Tkinter GUI 基本概念

归纳编程学习的感悟, 记录奋斗路上的点滴, 希望能帮到一样刻苦的你! 如有不足欢迎指正! 共同学习交流! 🌎欢迎各位→点赞 👍 收藏⭐ 留言​📝如果停止,就是低谷&#xf…

VM内存结构和垃圾回收机制

引言 在计算机科学中,虚拟机(VM)是一个重要的概念,它允许程序在硬件平台之上运行。虚拟机模拟真实机器的行为,为程序提供了一个独立的运行环境。本文将深入探讨VM的内存结构和垃圾回收机制,以帮助读者更好…

“python -m experiments.cifar10_test“是什么意思

具体解释如下: "python" 是运行 Python 解释器的命令。"-m" 是一个选项,用于指定要运行的模块。"experiments.cifar10_test" 是要运行的 Python 模块的名称。 其中 虽说main.py文件在上一级目录中,仍然可以在…

计算阶梯数 Python

题目描述 爱因斯坦曾出过这样一道有趣的数学题: 有一个长阶梯, 若每步上2阶,最后剩1阶; 若每步上3阶,最后剩2阶; 若每步上5阶,最后剩4阶; 若每步上6阶,最后剩5阶&#xf…

一文教会你Jenkins 主从模式实现分布式自动化测试

背景 日常构建Jenkins任务中,会经常出现下面的情况: (1)自动化测试执行需要消耗大量的 CPU 和内存资源,如果服务器上还有其他的服务,可能会造成卡顿或者宕机这样的情况; (2&#…

基于R语言lavaan的SEM在复杂统计建模中的科研技术新突破

此外,我们还将深入探讨R语言的基础知识、结构方程模型的基本原理、lavaan程序包的使用方法等内容。无论是潜变量分析、复合变量分析,还是非线性/非正态/缺失数据处理、分类变量分析、分组数据处理等复杂问题,我们都将一一为您解析。 希望通过…

redis未设置密码被植入挖矿脚本

最近一台测试linux响应速度贼慢,检查发现cpu消耗高达100%!查看进程杀死后过段时间又重启了,一时间也摸不到头绪。无意间发现启动redis的时候cpu瞬间拉到了100%,主要就是zzh和newinit.sh两个脚本。百度了一下说是被植入了挖矿脚本&…

腾讯云学生服务器详细介绍_学生服务器价格_学生机申请流程

2024年腾讯云学生服务器优惠活动「云校园」,学生服务器优惠价格:轻量应用服务器2核2G学生价30元3个月、58元6个月、112元一年,轻量应用服务器4核8G配置191.1元3个月、352.8元6个月、646.8元一年,CVM云服务器2核4G配置842.4元一年&…

代码随想录算法训练营第三十九天|动态规划|62.不同路径、63. 不同路径 II

62.不同路径 文章 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。 问总共有多少条不同的路径&…

什么样的项目适合Web自动化测试

🔥 交流讨论:欢迎加入我们一起学习! 🔥 资源分享:耗时200小时精选的「软件测试」资料包 🔥 教程推荐:火遍全网的《软件测试》教程 📢欢迎点赞 👍 收藏 ⭐留言 &#x1…

Java引用传递及基本应用

在 Java 中,传递参数的方式主要有两种:值传递(传递的是对象的引用值)和引用传递。本教程将重点介绍 Java 中的引用传递以及其基本应用。 1. 引用传递概念 在 Java 中,所有的方法参数都是通过值传递的。对于对象类型的…

好物周刊#43:设计素材下载

https://yuque.com/cunyu1943 村雨遥的好物周刊,记录每周看到的有价值的信息,主要针对计算机领域,每周五发布。 一、项目 1. frp 一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议&#xff0c…

FreeRTOS day2

使用ADC采样光敏电阻数值,如何根据这个数值调节LED灯亮度 总结DMA空闲中断接收数据的使用方法 首先要要选择串口然后配置串口的参数,配置MDA通道选择接受数据,配置空闲中断,定义一个数据接收的容器,启动MDA传输当串口…

【RabbitMQ】WorkQueue

📝个人主页:五敷有你 🔥系列专栏:MQ ⛺️稳中求进,晒太阳 Work Queues Work queues任务模型,简单来说就是让多个消费者绑定到一个队列,共同消费队列中的消息 当消息处理比较耗时的时候&…

电销平台架构的演变与升级

简介 信也科技电销平台承载了公司400多坐席的日常外呼任务,随着公司业务规模不断增长,业务复杂度不断提升,营销模式需要多样化,营销流程需要更加灵活。为了更好地赋能业务、提高客户转化率,电销平台不断升级优化&#…

不伤耳朵的蓝牙耳机推荐,骨传导耳机选购前必知的几大要点

在目前的蓝牙耳机市场上,骨传导蓝牙耳机以其独特的设计和不伤耳朵的好处而受到广泛关注。骨传导蓝牙耳机通过骨头传导声音,无需进入耳道,从而减少了耳朵的不适和潜在伤害。 骨传导蓝牙耳机这种开放式的设计允许用户在享受音乐的同时&#xf…

国家积极推进长城国家文化公园建设

长城脚下,文化绽放——国家积极推进长城国家文化公园建设 在中华大地的北方,横亘着一条巨龙,它见证着中华民族的沧桑岁月,承载着我们的民族记忆,它就是——长城。这座千年的雄关,不仅是中国的象征&#xf…