JAVA练习314- 二叉树展开为链表

发布时间:2026/7/21 9:18:55

JAVA练习314- 二叉树展开为链表
题目概览给你二叉树的根结点root请你将它展开为一个单链表展开后的单链表应该同样使用TreeNode其中right子指针指向链表中下一个结点而左子指针始终为null。展开后的单链表应该与二叉树 先序遍历 顺序相同。示例 1输入root [1,2,5,3,4,null,6]输出[1,null,2,null,3,null,4,null,5,null,6]示例 2输入root []输出[]示例 3输入root [0]输出[0]提示树中结点数在范围[0, 2000]内-100 Node.val 100进阶你可以使用原地算法O(1)额外空间展开这棵树吗来源114. 二叉树展开为链表 - 力扣LeetCode解题分析方法一先序遍历使用栈来存储根节点出栈时记录该节点然后将该节点的右节点、左节点入栈这样保证出栈的顺序永远是 根-左-右每次出栈移动指针即可。时间复杂度O(n)空间复杂度O(n)/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val val; } * TreeNode(int val, TreeNode left, TreeNode right) { * this.val val; * this.left left; * this.right right; * } * } */ class Solution { public void flatten(TreeNode root) { if (root null) { return; } DequeTreeNode dq new LinkedList(); dq.push(root); TreeNode temp new TreeNode(); while(!dq.isEmpty()) { TreeNode node dq.pop(); temp.right node; temp.left null; temp node; if (node.right ! null) { dq.push(node.right); } if (node.left ! null) { dq.push(node.left); } } } }方法二移动前驱右节点由于根节点右边的节点一定是大于左边所有节点的因此我们可以直接从左节点开始遍历记录一开始的右节点这里称作前驱节点如果左节点存在右节点我们就将前驱节点拼在右节点最右边叶子节点后面这样构成的树依然是递增的然后将该右节点作为新的前驱节点将左节点移动到右节点的位置继续从左节点遍历重复刚才步骤。时间复杂度O(n)空间复杂度O(1)/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val val; } * TreeNode(int val, TreeNode left, TreeNode right) { * this.val val; * this.left left; * this.right right; * } * } */ class Solution { public void flatten(TreeNode root) { if (root null) { return; } TreeNode temp root; while(temp ! null) { TreeNode left temp.left; if (left ! null) { TreeNode leftRight left; while(leftRight.right ! null) { leftRight leftRight.right; } leftRight.right temp.right; temp.right left; temp.left null; } temp temp.right; } } }

相关新闻

JAVA练习315- 从前序与中序遍历序列构造二叉树

JAVA练习315- 从前序与中序遍历序列构造二叉树

2026/7/19 15:14:46

题目概览 给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。 示例 1: 输入: preorder [3,9,20,15,7], inorder [9,3,15,20,7] 输出: [3,9,20,null,nu…

JAVA练习313- 二叉树的右视图

JAVA练习313- 二叉树的右视图

2026/7/19 15:14:46

题目概览 给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。 示例 1: 输入:root [1,2,3,null,5,null,4] 输出:[1,3,4] 解释: 示例…

Python agent2agent-server 包完全指南:安装、语法、案例与常见错误

Python agent2agent-server 包完全指南:安装、语法、案例与常见错误

2026/7/19 15:14:46

1. 引言随着 AI Agent 技术的快速发展,多智能体协作已成为构建复杂自动化系统的关键方向。agent2agent-server 是一个轻量级 Python 包,旨在简化不同 AI Agent 之间的通信与协作。本文将详细介绍该包的安装、核心语法、参数配置,并通过 8 个实…

华为手机远程找回与数据防护全指南

华为手机远程找回与数据防护全指南

2026/7/21 9:17:17

1. 为什么需要远程找回手机?手机丢失或被盗是每个现代人都可能遭遇的噩梦。根据2023年移动设备安全报告,全球每天有超过20万台智能手机丢失,其中仅有35%能够成功找回。华为手机作为国内市场份额领先的品牌,其内置的"查找我的…

丹麦数字人才战略:吸引与保留国际技术精英的黄金三角

丹麦数字人才战略:吸引与保留国际技术精英的黄金三角

2026/7/21 9:17:17

1. 丹麦数字人才战略的启示在哥本哈根一家科技公司的开放式办公室里,来自印度的程序员、巴西的数据分析师和丹麦本地的产品经理正围坐在一张乒乓球桌旁讨论项目——这种场景在丹麦科技企业已成为常态。作为全球数字竞争力排名前列的国家,丹麦在吸引和保留…

Linux服务器挖矿木马应急响应实战:从告警到根因定位的完整排查指南

Linux服务器挖矿木马应急响应实战:从告警到根因定位的完整排查指南

2026/7/21 9:17:17

1. 项目概述:当告警响起,一场与时间的赛跑 深夜,手机突然响起刺耳的告警铃声。不是闹钟,而是来自监控系统的紧急通知——某台核心服务器的CPU使用率在短短几分钟内飙升至98%,并且持续不退。作为一名运维老兵&#xff0…

基于Spring Boot+Vue的课程作业管理系统:从零搭建到二次开发实战

基于Spring Boot+Vue的课程作业管理系统:从零搭建到二次开发实战

2026/7/21 9:17:17

这次我们来看一个开源的课程作业管理系统,这是一个典型的基于Java技术栈的毕业设计项目。对于计算机相关专业的同学来说,毕业设计是绕不开的一环,而一个功能完整、结构清晰、文档齐全的开源项目,能极大地降低从零开始的难度。这个…

Linux C串口编程深度排雷:从终端净化到工业级可靠通信

Linux C串口编程深度排雷:从终端净化到工业级可靠通信

2026/7/21 9:17:17

1. 项目概述:为什么Linux C串口编程是个“坑王”?搞嵌入式或者工控的朋友,对串口通信肯定不陌生。在Windows下,用个现成的串口调试助手,点点鼠标,数据就收发了,感觉挺简单。但一旦切换到Linux环…

实操教学 AI 做 word 文档,AI 导出鸭多方案对比降低文档转换操作成本

实操教学 AI 做 word 文档,AI 导出鸭多方案对比降低文档转换操作成本

2026/7/21 9:07:16

AI做word文档高效落地技巧,AI 导出鸭一站式解决各类文档导出难题实操教学AI做word文档,AI 导出鸭多方案对比降低文档转换操作成本批量处理AI做word文档,AI 导出鸭覆盖全终端实现文档自由导出 引言 数字化办公浪潮下,文字内容批量转…

微服务进阶:服务网格与Istio

微服务进阶:服务网格与Istio

2026/7/21 5:45:57

541|微服务进阶:服务网格与Istio 上篇文章我们聊了微服务的基本概念和拆分方法。 但微服务多了,问题也多了: 服务之间怎么通信? 怎么监控每个服务的调用链路? 熔断、限流、重试怎么做? 安全认证怎么统一? 以前这些都靠SDK库(比如Hystrix、Feign),每个服务都要集成…

零售超级终端全域协同:ShareKit 碰一碰商品流转业务落地案例

零售超级终端全域协同:ShareKit 碰一碰商品流转业务落地案例

2026/7/20 2:33:13

一、零售门店全域协同业务背景与行业痛点 1.1 门店超级终端设备矩阵(连锁便利店/商超标准配置) 自助收银Kiosk一体机:顾客结算、自助核销优惠券、商品素材预览;运营折叠平板:店长后台商品上新、图片录入、活动配置、…

噗叽短视频界面分析

噗叽短视频界面分析

2026/7/21 3:09:32

1 和小红书类似,可以采用类似判断方法------------其实他比小红书好判断,因为他没有图片,控件位置几乎是固定的,都不用判断------------2 因为他没有点赞按钮------------而且几乎所有控件位置都是完全一样的,所以我就…

GraphRAG Local + Ollama:微软知识图谱本地化

GraphRAG Local + Ollama:微软知识图谱本地化

2026/7/21 0:06:35

普通 RAG 有个老毛病:你问它「这堆文档整体在讲什么」,它答不上来。因为它只会把问题切成向量,去几十个文本块里捞最相似的几段拼给模型看。可「整体讲什么」这种问题,答案根本不在任何单独一段里——它散在全篇的联系里。 微软的…

AI 数据产品化思考:让分析能力变成可售卖的数据服务

AI 数据产品化思考:让分析能力变成可售卖的数据服务

2026/7/21 0:06:35

AI 数据产品化思考:让分析能力变成可售卖的数据服务 大家好,我是朱大喜。这周一直在复盘具体的项目和技术,最后一篇聊点不一样的东西——数据产品化。做了这么多年数据分析,我发现一个规律:能卖出去的从来不是"分…

基于人机协作的 AI 研发新体系架构:从 Harness 工程到 Loop 工程实践

基于人机协作的 AI 研发新体系架构:从 Harness 工程到 Loop 工程实践

2026/7/21 0:06:35

本文完整呈现了企业级 AI Coding 落地的核心方法论:从 Harness 工程的微观/宏观定义,到 Loop 工程的六大构建模块,再到基于 SDD(规范驱动开发)的工程化落地路径。干货较多,建议收藏细读。 我从 22 年开始就…