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

【java】leetcode 二叉树展开为链表

二叉树展开为链表

  • leetcode114 .二叉树展开为链表
  • 解题思路
  • 二叉树专题:

leetcode114 .二叉树展开为链表

114 leetcode 链接。可以打开测试

给你二叉树的根结点 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]

解题思路

题目中,说展开后和先序遍历的顺序相同。那我们就可以先去先序遍历这个二叉树,按先序遍历把节点放进集合中,然后重构出一个单链表。

代码演示:

/*** 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) {ArrayList<TreeNode> list= new ArrayList();process(root,list);for(int i = 0; i < list.size() - 1;i++){//只有右子树,来构造单链表list.get(i).right = list.get(i+1);//左子树置为空list.get(i).left = null;}}/*** 先序遍历 把节点加入到集合中*/public  void process(TreeNode root, ArrayList<TreeNode> list){if(root == null){return ;}list.add(root);process(root.left,list);process(root.right,list);}
}

二叉树专题:

填充每个节点的下一个右侧节点指针(java)

LeetCode: 二叉树的直径(java)

从前序与中序遍历序列构造二叉树(java)

leetcode二叉树中的最大路径和(java)

计算二叉树中最大的二叉搜索子树的大小(节点数量)

给定一棵二叉树的头节点,返回这颗二叉树中最大的二叉搜索子树的头节点

二叉树专题-求两个节点的最低公共祖先

相关文章:

【java】leetcode 二叉树展开为链表

二叉树展开为链表 leetcode114 .二叉树展开为链表解题思路二叉树专题&#xff1a; leetcode114 .二叉树展开为链表 114 leetcode 链接。可以打开测试 给你二叉树的根结点 root &#xff0c;请你将它展开为一个单链表&#xff1a; 展开后的单链表应该同样使用 TreeNode &#x…...

windows环境, nginx https配置

在 Windows 环境下配置 Nginx 的 HTTPS&#xff0c;需要以下步骤&#xff1a; 1. 安装 OpenSSL 首先需要安装 OpenSSL&#xff0c;可以从官网下载 Windows 版本的 OpenSSL&#xff0c;然后解压到某个目录下&#xff0c;比如 C:\OpenSSL-Win64。 2. 生成 SSL 证书和私钥 使用…...

git 命令

初始化git目录 mkdir git-test cd git-test git init 配置git用户 git config --global user.name "yyuu007" git config --global user.email "12699891yyuu007user.noreply.gitee.com" 克隆远程代码 -b 指定分支 git clone -b dev gitgitee.com:y…...

【高分论文密码】大尺度空间模拟预测与数字制图

详情点击链接&#xff1a;【高分论文密码】大尺度空间模拟预测与数字制图一&#xff0c;R语言空间数据及数据挖掘 1、R语言空间数据 1.1R语言基础与数据科学 1.2R空间矢量数据 1.3R栅格数据2、R语言空间数据挖掘关键技术​​​​​​​二&#xff0c;R语言空间数据高级处理技…...

Word控件Aspose.Words教程:使用 C# 读取 SXC 和 FODS 文件

Aspose.Words是一种高级Word文档处理API&#xff0c;用于执行各种文档管理和操作任务。API支持生成&#xff0c;修改&#xff0c;转换&#xff0c;呈现和打印文档&#xff0c;而无需在跨平台应用程序中直接使用Microsoft Word。 Aspose支持流行文件格式处理&#xff0c;并允许…...

代码示范【FabEdge v0.8.0】配置 connector 公开端口

FabEdge项目简介&#xff1a; FabEdge是博云在2021年8月发起&#xff0c;基于Kubernetes 构建的专注于边缘计算场景的容器网络方案&#xff0c;支持 KubeEdge 、SuperEdge、OpenYurt 等主流边缘计算框架。旨在解决边缘计算场景下容器网络配置管理复杂、网络割裂互不通信、缺少…...

通过Python的PyPDF2库合并多个pdf文件

文章目录 前言一、PyPDF2库是什么&#xff1f;二、安装PyPDF2库三、查看PyPDF2库版本四、合并多个pdf文件1.引入库2.定义pdf路径3.获取所有要合并的PDF文件名4.创建一个新的PDF文件5.遍历所有PDF文件名6.打开PDF文件7.创建PDF阅读器对象8.遍历PDF中的每一页&#xff0c;并将它们…...

python基础 - python命名空间与作用域

命名空间是名称与对象之间的关系&#xff0c;可以将命名空间看做是字典&#xff0c;其中的键是名称&#xff0c;值是对象。 命名空间不共享名称。 在命名空间中的名称能将任何python对象作为值&#xff0c;在不同的命名空间中相同的名称可以与不同的对象相关联。但是&#xf…...

MapReduce实战案例(3)

案例三: MR实战之TOPN(自定义GroupingComparator) 项目准备 需求测试数据 有如下订单数据 订单id商品id成交金额Order_0000001Pdt_01222.8Order_0000001Pdt_0525.8Order_0000002Pdt_03522.8Order_0000002Pdt_04122.4Order_0000002Pdt_05722.4Order_0000003Pdt_01222.8 现在…...

Socket(三)

文章目录 1. 设置Socket选项2. TCP_NODELAY3. SO_LINGER4. SO_TIMEOUT5. SO_RCVBUF和SO_SNDBUF6. SO_KEEPALIVE7. OOBINLINE8. SO_REUSEADDR9. IP_TOS服务类型10. Socket异常 1. 设置Socket选项 Socket选项指定了Java Socket类所依赖的原生socket如何发送和接受数据&#xff0…...

【JVM】12. 垃圾回收相关概念

文章目录 12.1. System.gc()的理解12.2. 内存溢出与内存泄露内存溢出&#xff08;OOM&#xff09;内存泄漏&#xff08;Memory Leak&#xff09; 12.3. Stop The World12.4. 垃圾回收的并行与并发并发&#xff08;Concurrent&#xff09;并行&#xff08;Parallel&#xff09;并…...

Java 版 spring cloud 工程系统管理 工程项目管理系统源码 工程项目各模块及其功能点清单

工程项目各模块及其功能点清单 一、系统管理 1、数据字典&#xff1a;实现对数据字典标签的增删改查操作 2、编码管理&#xff1a;实现对系统编码的增删改查操作 3、用户管理&#xff1a;管理和查看用户角色 4、菜单管理&#xff1a;实现对系统菜单的增删改查操…...

【Linux系统基础快速入门详解】Linux系统命令行介绍、命令提示符知识详解: ~/#/@等符号

Linux系统的命令行界面是Linux系统的核心部分,也是最常用的部分。在命令行界面中,用户可以使用各种Linux系统命令进行文件操作、系统管理、网络管理等操作。下面介绍一些常见的Linux系统命令行知识,以及命令提示符中的一些符号的含义。 1. 命令行界面 在Linux系统中,命令…...

Python 面向对象编程笔记:中级面向对象

__super__() 在 Python 中&#xff0c;super 是一个内置函数&#xff0c;用于调用父类方法。该函数可以在子类中调用父类中被重写的方法&#xff0c;从而实现对父类方法的继承并且进行扩展。它能够动态地查找当前子类继承链中的下一个类&#xff0c;从而允许设计者更加灵活地…...

JVM学习笔记(上)

1、总体路线 2、程序计数器 Program Counter Register 程序计数器&#xff08;寄存器&#xff09; 作用&#xff1a;是记录下一条 jvm 指令的执行地址行号。 特点&#xff1a; 是线程私有的不会存在内存溢出 解释器会解释指令为机器码交给 cpu 执行&#xff0c;程序计数器会…...

反爬虫技术

预计更新 一、 爬虫技术概述 1.1 什么是爬虫技术 1.2 爬虫技术的应用领域 1.3 爬虫技术的工作原理 二、 网络协议和HTTP协议 2.1 网络协议概述 2.2 HTTP协议介绍 2.3 HTTP请求和响应 三、 Python基础 3.1 Python语言概述 3.2 Python的基本数据类型 3.3 Python的流程控制语句 …...

JAVA中.equals()与 ==的区别

1. “”是运算符&#xff0c;如果是基本数据类型&#xff0c;则比较存储的值&#xff1b;如果是引用数据类型&#xff0c;则比较所指向对象的地址值。 2..equals() equals是Object的方法&#xff0c;比较的是所指向的对象的地址值&#xff0c;一般情况下&#xff0c;重写之后比…...

华为OD机试之羊、狼、农夫过河(Java源码)

羊、狼、农夫过河 题目描述 羊、狼、农夫都在岸边&#xff0c;当羊的数量小于狼的数量时&#xff0c;狼会攻击羊&#xff0c;农夫则会损失羊。农夫有一艘容量固定的船&#xff0c;能够承载固定数量的动物。 要求求出不损失羊情况下将全部羊和狼运到对岸需要的最小次数。只计算…...

C++ string的简单应用

C语言的字符串 C的字符串 头文件&#xff1a; #include<string.h> //c #include<string> //C #include<cstring> //C 比较string的大小 两个string对象相加 使用字符串对象来存放字符串 两个string对象相加 string str "Hello,"; st…...

Java中的阻塞队列

阻塞队列的基本概念 1、生产者、消费者的概念 他俩是设计模式的一种&#xff0c;提出这两种概念&#xff0c;通过一个容器的方式能解决强耦合问题 生产者、消费者之间不会直接通讯。通过一个第三方容器、队列的方式进行通讯 生产者生产完数据放入容器之后&#xff0c;不用等待消…...

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql

智慧工地管理云平台系统&#xff0c;智慧工地全套源码&#xff0c;java版智慧工地源码&#xff0c;支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求&#xff0c;提供“平台网络终端”的整体解决方案&#xff0c;提供劳务管理、视频管理、智能监测、绿色施工、安全管…...

定时器任务——若依源码分析

分析util包下面的工具类schedule utils&#xff1a; ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类&#xff0c;封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz&#xff0c;先构建任务的 JobD…...

mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包

文章目录 现象&#xff1a;mysql已经安装&#xff0c;但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时&#xff0c;可能是因为以下几个原因&#xff1a;1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...

laravel8+vue3.0+element-plus搭建方法

创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...

iview框架主题色的应用

1.下载 less要使用3.0.0以下的版本 npm install less2.7.3 npm install less-loader4.0.52./src/config/theme.js文件 module.exports {yellow: {theme-color: #FDCE04},blue: {theme-color: #547CE7} }在sass中使用theme配置的颜色主题&#xff0c;无需引入&#xff0c;直接可…...

MySQL 部分重点知识篇

一、数据库对象 1. 主键 定义 &#xff1a;主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 &#xff1a;确保数据的完整性&#xff0c;便于数据的查询和管理。 示例 &#xff1a;在学生信息表中&#xff0c;学号可以作为主键&#xff…...

【从零开始学习JVM | 第四篇】类加载器和双亲委派机制(高频面试题)

前言&#xff1a; 双亲委派机制对于面试这块来说非常重要&#xff0c;在实际开发中也是经常遇见需要打破双亲委派的需求&#xff0c;今天我们一起来探索一下什么是双亲委派机制&#xff0c;在此之前我们先介绍一下类的加载器。 目录 ​编辑 前言&#xff1a; 类加载器 1. …...

WPF八大法则:告别模态窗口卡顿

⚙️ 核心问题&#xff1a;阻塞式模态窗口的缺陷 原始代码中ShowDialog()会阻塞UI线程&#xff0c;导致后续逻辑无法执行&#xff1a; var result modalWindow.ShowDialog(); // 线程阻塞 ProcessResult(result); // 必须等待窗口关闭根本问题&#xff1a…...

数据结构:递归的种类(Types of Recursion)

目录 尾递归&#xff08;Tail Recursion&#xff09; 什么是 Loop&#xff08;循环&#xff09;&#xff1f; 复杂度分析 头递归&#xff08;Head Recursion&#xff09; 树形递归&#xff08;Tree Recursion&#xff09; 线性递归&#xff08;Linear Recursion&#xff09;…...

6.9-QT模拟计算器

源码: 头文件: widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QMouseEvent>QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : public QWidget {Q_OBJECTpublic:Widget(QWidget *parent nullptr);…...