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

【LeetCode-中等题】114. 二叉树展开为链表

文章目录

    • 题目
    • 方法一:前序遍历(构造集合) + 集合(构造新树)
    • 方法二:原地构建
    • 方法三:前序遍历--迭代(构造集合) + 集合(构造新树)

题目

在这里插入图片描述

方法一:前序遍历(构造集合) + 集合(构造新树)

 List<TreeNode> res = new ArrayList<>();public void flatten(TreeNode root) {dfs(root);for(int i  = 0 ; i <res.size() ; i++){if(i == res.size()-1){//处理最后一个节点res.get(i).left = null;res.get(i).right = null;break;}res.get(i).left = null;res.get(i).right = res.get(i+1);}}//前序遍历public void dfs(TreeNode root) {if(root == null ) return ;res.add(root);dfs(root.left);dfs(root.right);}

方法二:原地构建

  1. 将左子树插入到右子树的地方
  2. 将原来的右子树接到左子树的最右边节点
  3. 考虑新的右子树的根节点,一直重复上边的过程,直到新的右子树为 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;}}}

在这里插入图片描述

方法三:前序遍历–迭代(构造集合) + 集合(构造新树)

 public void flatten(TreeNode root) {List<TreeNode> res = new ArrayList<>();Deque<TreeNode> stack = new LinkedList<>();while(!stack.isEmpty() || root != null){while(root != null) {res.add(root);stack.push(root);root = root.left;}root = stack.pop();root = root.right;}for(int i  = 0 ; i <res.size() ; i++){if(i == res.size()-1){//处理最后一个节点res.get(i).left = null;res.get(i).right = null;break;}res.get(i).left = null;res.get(i).right = res.get(i+1);}}

相关文章:

【LeetCode-中等题】114. 二叉树展开为链表

文章目录 题目方法一&#xff1a;前序遍历&#xff08;构造集合&#xff09; 集合&#xff08;构造新树&#xff09;方法二&#xff1a;原地构建方法三&#xff1a;前序遍历--迭代&#xff08;构造集合&#xff09; 集合&#xff08;构造新树&#xff09; 题目 方法一&#x…...

【题解】JZOJ6645 / 洛谷P4090 [USACO17DEC] Greedy Gift Takers P

洛谷 P4090 [USACO17DEC] Greedy Gift Takers P 题意 n n n 头牛排成一列&#xff0c;队头的奶牛 i i i 拿一个礼物并插到从后往前数 c i c_i ci​ 头牛的前面&#xff0c;重复无限次&#xff0c;问多少奶牛没有礼物。 题解 发现若一头牛无法获得礼物&#xff0c;那么它后…...

Vue 项目中的错误如何处理的?

1、 组件中的处理&#xff1a;使用 errorCaptured 钩子 作用&#xff1a;可以捕获来自后代组件的错误 父组件(errorCaptured) -> 子组件 (errorCaptured) -> 当孙子组件出错时&#xff0c;错误会一直向上抛&#xff0c;也就是先触发子组件的 errorCaptured&#xff0c;…...

网络分层的真实含义

复杂的程序都要分层&#xff0c;这是程序设计的要求。比如&#xff0c;复杂的电商还会分数据库层、缓存层、Compose 层、Controller 层和接入层&#xff0c;每一层专注做本层的事情。 当一个网络包从一个网口经过的时候&#xff0c;你看到了&#xff0c;首先先看看要不要请进来…...

RT-Thread 线程间同步

线程间同步 在多线程实时系统中&#xff0c;一项工作的完成往往可以通过多个线程协调的方式共同来完成&#xff0c;那么多个线程之间如何 “默契” 协作才能使这项工作无差错执行&#xff1f;下面举个例子说明。 例如一项工作中的两个线程&#xff1a;一个线程从传感器中接收…...

Python元类再解释

Python元类再解释 元类是什么&#xff1f; 你可以把元类看作是“生产类的工厂”。就像类是用来生产对象的&#xff0c;元类是用来生产类的。 为什么需要元类&#xff1f; 考虑一个场景&#xff1a;假设你正在编写一个框架&#xff0c;你希望框架中的所有类都有某些特定的方…...

常用的Spring Boot 注解及示例代码

简介&#xff1a;Spring Boot 是一个用于快速构建基于 Spring 框架的应用程序的工具&#xff0c;通过提供一系列的注解&#xff0c;它使得开发者可以更加轻松地配置、管理和控制应用程序的各种行为。以下是一些常用的 Spring Boot 注解&#xff0c;以及它们的功能和示例代码&am…...

react app教程

react app教程 环境准备 下载node 下载npx npm install npx创建app npx create-react-app automedia cd automedia npm start构建发布版本 npm run build安装调试工具 # .vscode/launch.json {// 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。// 欲了…...

在vue项目中用vue-watermark快捷开发屏幕水印效果

我们先引入一个第三方依赖 npm install vue-watermark然后 因为这只是个测试工具 我就直接代码写 App.vue里啦 参考代码如下 <template><div><vue-watermark :text"watermarkText"></vue-watermark><!-- 正常的页面内容 --></div…...

无涯教程-Android - Activity

Activity代表具有用户界面的单个屏幕&#xff0c;就像Java的窗口或框架一样。Android Activity 是ContextThemeWrapper类的子类。 如果您使用过C&#xff0c;C或Java编程语言&#xff0c;那么您一定已经看到您的程序从 main()函数开始。与之非常相似&#xff0c;Android系统以 …...

vue项目前端展示数学公式(在表格中渲染)

现有需求为 将实验数据录入表格中,需要表格呈现物理公式,使用Mathjax在vue2中 进行呈现 1.安装 npm i --save mathjax-vue 2.全局注册(main.js中) import MathJax, { initMathJax, renderByMathjax } from mathjax-vuefunction onMathJaxReady() {const el document.getEl…...

java八股文面试[数据库]——MySQL索引的数据结构

知识点&#xff1a; 【2023年面试】mysql索引的基本原理_哔哩哔哩_bilibili 【2023年面试】mysql索引结构有哪些&#xff0c;各自的优劣是什么_哔哩哔哩_bilibili...

python3.11教程2:基础数据类型(数字和字符串)、组合数据类型(集合、元组、列表、字典)

文章目录 五、基本数据类型5.1 整数和浮点数5.1.1 整数和浮点数的类型5.1.2 进制和进制转换5.1.3 round函数 5.2 运算符5.2.1 常用运算符、运算符函数和逻辑运算符5.2.2 位运算符5.2.3 运算符的优先级及其进阶使用 5.3 布尔类型5.4 字符串5.3.1 字符串的基本操作5.3.2 字符串函…...

剑指 Offer 44. 数字序列中某一位的数字(中等)

题目&#xff1a; class Solution { //本题单纯找规律&#xff0c;要注意通过n%digits来判断有几个位数为digits的数 public:int findNthDigit(int n) {long base 9, digits 1; //digits代表位数while(n-base*digits>0){ //该循环是为了确定目标数字所在…...

SpringBoot中HttpClient的学习

一、介绍 HttpClient是Apache Jakarta Common 下的子项目&#xff0c;可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包。 HttpClient 是一个HTTP通信库、一个工具包&#xff0c;它只提供一个通用浏览器应用程序所期望的功能子集&#xff0c;与浏览…...

JVM-内存溢出的原因、CPU占满的原因

1.内存溢出的原因 OOM的排查思路_oom排查_java排坑日记的博客-CSDN博客 每个进程的内存&#xff08;限制&#xff0c;譬如2G&#xff09;最大堆容量最大方法区容量程序计数器虚拟机栈和本地方法栈。多线程下每个线程栈越大&#xff0c;越容易OOM. 1.堆内存溢出&#xff08;OO…...

如何做好银行统一报送系统UI设计

北京蓝蓝设计公司是一支由清华美院毕业的专业团队组成的设计公司。我们的设计师们在金融银行软件领域拥有12年的工作经验和丰富的行业知识。 在工作中我们常常思考银行金融反洗钱软件用户使用痛点是什么&#xff1f;我们发现用户的使用痛点往往是&#xff1a; 1功能入口不清晰…...

988. 从叶结点开始的最小字符串

988. 从叶结点开始的最小字符串 C代码&#xff1a;DFS /*** Definition for a binary tree node.* struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* };*/// 叶子节点// 每一层用一个pathTop、遇到叶子节点就判断一次&#xff1b;…...

RealSense D455启动教程

环境&#xff1a; ubuntu20.04 ros:noetic 视觉传感器&#xff1a;Intel RealSense D455 通过命令安装不成功后改为下面源码安装 1. 安装Intel RealSense SDK 2.0 1.1源码安装 1. 下载源码git clone https://github.com/IntelRealSense/librealsense cd librealsense…...

docker与phpstudy两种方式部署wordpress 并 开启伪静态

实际测试&#xff0c;可能是docker内存限制的缘故&#xff0c;docker部署的会比较卡 下载 wordpress phpstudy phpstudy中伪静态配置 伪静态 正常访问 WordPress 文章页的 URL 地址为 http://asa/index.php?p123。变成伪静态就是http://asa/123.html 。 伪静态是相对真实静…...

掌握AMD Ryzen硬件调试:SMUDebugTool从入门到精通的完整指南

掌握AMD Ryzen硬件调试&#xff1a;SMUDebugTool从入门到精通的完整指南 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: http…...

基于RT-Thread与STM32的机器人底盘驱动控制模型设计与实现

1. 项目概述与核心价值最近在做一个机器人底盘的项目&#xff0c;客户要求既要实时性高&#xff0c;又要能方便地调试和后期维护。一开始想着直接用裸机写个状态机&#xff0c;但考虑到后续要加传感器融合、路径规划这些复杂算法&#xff0c;裸机那套调度和资源管理就有点捉襟见…...

别再傻傻用IO翻转了!用STM32的SPI+DMA驱动WS2812灯带,实测1920颗灯珠依然稳如老狗

STM32 SPIDMA驱动WS2812灯带&#xff1a;从时序优化到千级灯珠稳定控制实战 1. 为什么GPIO翻转方案在大型项目中频频翻车&#xff1f; 很多嵌入式开发者初次接触WS2812灯带时&#xff0c;都会尝试用GPIO翻转来实现控制——毕竟看起来只需要一根信号线&#xff0c;似乎用普通IO口…...

短剧进军韩国:外卡收单+本地钱包,Antom助你打通“付费最后一公里”

韩国短剧市场正以惊人的速度崛起。2024年&#xff0c;韩国短剧市场规模已达4.9亿美元&#xff0c;全球排名第4&#xff0c;预计未来将突破15亿美元。中国出海平台如DramaBox、ShortMax、ReelShort等早已抢先布局&#xff0c;在下载榜和收入榜上占据大半江山。然而&#xff0c;流…...

昇腾CANN shmem:把多张 NPU 的 HBM 变成一块全局内存

hccl 的通信模型是消息传递——发送方调 send&#xff0c;接收方调 recv&#xff0c;两边同步。hixl 的模型是单边推送——发送方调 put&#xff0c;接收方不用参与。shmem 是第三种模型&#xff1a;PGAS&#xff08;Partitioned Global Address Space&#xff09;&#xff0c;…...

零成本构建自己的视频切割数据集:我是如何用FFmpeg和TransNet V2训练专属模型的

零成本构建视频切割数据集&#xff1a;FFmpeg与TransNet V2实战指南 在视频内容爆炸式增长的今天&#xff0c;自动检测视频中的镜头切换点&#xff08;cuts&#xff09;和渐变过渡&#xff08;dissolves&#xff09;成为内容分析的基础需求。无论是影视制作团队需要自动化剪辑&…...

为什么你需要一个完整的Unity历史版本下载库?开发者必备的版本管理解决方案

为什么你需要一个完整的Unity历史版本下载库&#xff1f;开发者必备的版本管理解决方案 【免费下载链接】download.unity.com Unity国际版下载&#xff0c;解决国内打不开网站和被重定向的问题 项目地址: https://gitcode.com/gh_mirrors/do/download.unity.com 在游戏开…...

模电数电不再怕:用甘晴void的三本笔记法,搞定HNU电路与电子学课堂测验与作业

模电数电不再怕&#xff1a;用甘晴void的三本笔记法&#xff0c;搞定HNU电路与电子学课堂测验与作业 电路与电子学这门课&#xff0c;对很多计算机专业的学生来说就像一座难以逾越的高山。模电的抽象概念、数电的逻辑设计&#xff0c;加上频繁的课堂测验和课后作业&#xff0c;…...

【Java入门|集合全解析:List、Set与Map详解】

Java集合Java集合分为单列集合和双列集合&#xff0c;也就是 Collection 和 Map 。顾名思义&#xff0c; Collection 一个位置上仅存放一个元素&#xff1b; Map 一个位置上有两个元素&#xff08;分为键和值&#xff09;。 Map 和 Collection 下又分别衍生出多种集合种类&…...

用51单片机和HC-SR04超声波模块,手把手教你做个倒车防撞提醒器(附完整代码和立创EDA原理图)

51单片机与超声波模块实战&#xff1a;打造高精度倒车防撞系统 引言 在智能交通与汽车电子领域&#xff0c;距离检测技术扮演着越来越重要的角色。对于电子爱好者而言&#xff0c;掌握超声波测距原理并实现实际应用&#xff0c;不仅能提升硬件开发能力&#xff0c;还能为日常生…...