LeetCode99-20.8.8-恢复二叉搜索树

Geant4 学习笔记(一):实现multi-thread多线程 简单修改实现Geant4多线程 阅读详情

题目链接:LeetCode99
分析:看了题解做的,一开始想遍历树找到不符合的一个节点并在树中再次遍历找另一个,后来发现是一团糟。看了题解之后发现只要利用BST中序遍历是有序的特点就能思路清晰的做。
如题解所说,有三种解法,时间复杂度都是o(n),空间复杂度分别是o(n),o(h),o(1),三者都利用了二叉搜素树中序遍历有序。
第一种是中序遍历出来,找到交换的点的值,然后遍历找交换的点直接赋另外的一个的值。
第二种隐式中序遍历是保存一个中序遍历的前驱的值,手动实现栈和递归的栈原理一样,都是,一直进入到树底部,然后一层层返回的。
在这里插入图片描述
第三种Morris中序遍历是为了节省栈调用的空间,所以把递归返回到父节点的那一层的过程变为用左子树的最右节点来存储父节点的地址。
在这里插入图片描述

如图,黄色的线和绿色的线代表遍历的顺序,红色的线代表和左子树的最右节点(即是中序遍历父节点的前驱)与父节点链接。
当黄色的线到达最右节点时候,红色的线连接。
绿色的线即是树的中序遍历顺序。

1、2、3对比如下:
时间:o(n) 3>1>2
空间:o(n) o(h) o(1) 1>2>3
按道理应该是这样
1.时间:遍历树n,查找数组1~n-1,遍历更新1 ~n-1,
总体o(n)~o(3n)=o(n)
空间:数组空间n,系统栈空间(树高)h
总体o(n)+o(h)=o(n)
2.时间:遍历树n
总体o(n)
空间:手动栈空间h
总体o(h)
3.时间:遍历连左子树最右节点大概n,遍历n
总体o(2n)=o(n)
空间:几个变量
总体o(1)

但是…
我的提交从下到上分别是1,2,3种解法
在这里插入图片描述
内存占用大小是空间复杂度的体现吗?

tcmalloc(高并发内存池)简化版讲解-项目 高清发不上去,私我发高清,项目完整代码@我。 阅读详情

相关推荐

【深圳】IBM V3500存储维修 更换控制器故障

今天给大家分享的是深圳.福田区一个电商客户公司一台IBM Storwize v3500存储控制器故障从远程诊断 收集日志 分析结果的实际案例,如图所示通过存储管理口登陆进去后直接看到少了一个控制器,经过工程师分析日志后判定为该控制器损坏,接下来更换控制器配件,标准套件的控制器不带子卡和电池,所以需要把故障控制器上的子卡和电池拆下来装到新控制器上,这个电池拆还需要点技巧,接着把新的控制器插回V3500主机,等待大约十分钟后,新控制器指示灯全绿,管理界面看到节点已联机;冠峰科技-爱科技爱分享。

OuYangYuXi的博客 4576

Leetcode:NO.99 恢复二叉搜索树 中序遍历

题目 二叉搜索树中的两个节点被错误地交换。 请在不改变其结构的情况下,恢复这棵树。 示例 1: 输入: [1,3,null,null,2] 1 / 3 \ 2 输出: [3,1,null,null,2] 3 / 1 \ 2 示例 2: 输入: [3,1,4,null,null,2] 3 / \ 1 4 / 2 输出: [2,1,4,null,null,3] 2 / \ 1 4 / 3 进阶: 使用 O(

泛泛之素 567

Matlab App Designer自学笔记(六):坐标轴控件axis函数绘图方法

作用: 绘制函数显示 显示图像(jpg png tiff) 颜色选项: r(红色) g(绿色) b(蓝色) w(白色) k(黑色) 其他 一、坐标区控件及设置 可以对坐标去进行设计: 二、功能实现及编程 功能:点击“绘图按钮”,能显示曲线。 实现:对按钮设置回调函数 若要多个图像显示在一个坐标系中,需要语句:hold(app.UIAxes,"on"); app.UIAxes是这个坐标轴的名字。 function ButtonP...

陶小桃Blog 3万+

【数据结构与算法 | 灵神题单 | 二叉搜索树篇】力扣99, 1305, 230, 897

时间复杂度为O(n*logn),是由于调库的排序方法的时间复杂度是O(n*logn)。空间复杂度是O(n),因为使用了跟树节点大小的列表空间。将其重新排列为一棵递增顺序搜索树,使树中最左边的节点成为树的根节点,并且每个节点没有左子节点,只有一个右子节点。中序遍历得到node节点,然后插入到递增的顺序链表中。2 不能在 3 的右子树中,因为 2 < 3。3 不能是 1 的左孩子,因为 3 > 1。把两个树中所有的节点的值都放进了一个列表,排序以后返回。给定一个二叉搜索树的根节点。给你二叉搜索树的根节点。

2301_80912559的博客 1519

VCS2018在Ubuntu20 18安装步骤

之前在Ubuntu20上下VCS,花了好几天时间,本来想写博客避免以后重复劳动。但由于各种原因拖了一两个月,这次由于疫情原因,期末考试推迟,所以就再次在Ubuntu18上下了VCS,顺便写博客记录。 以下VCS2018安装方法适用于 Ubuntu20、Ubuntu18,亲测可用。其他Linux发行版没试过,但应该步骤差不多。 文章目录安装包安装步骤1、建立安装路径,更改权限2、运行安装器进行安装3、生成License文件4、设置环境变量5、验证License6、启动lmgrd验证软件是否安装成功dvever

s-stone的博客 3万+

第一章 DRM 子系统概述:1.2 专栏定位与技术覆盖范围

本专栏系统解析Linux内核DRM图形子系统的核心技术,涵盖GEM对象管理、TTM内存机制、DRM-Fence同步等核心模块,深入剖析DMA-BUF共享、DMA_Resv资源管理等关键技术。通过解读内核源码与用户态接口(libdrm),结合进程管理、匿名inode等底层机制,构建完整的DRM知识体系。专栏兼顾深度与易懂性,辅以实际应用场景分析,既适合图形驱动开发新手入门,也可满足资深工程师进阶需求,帮助读者掌握从内核实现到应用开发的全栈知识。

图形/计算GPU的驱动与虚拟化技术分享园地 3023

【Leetcode】99.恢复二叉搜索树——三种解法

99.恢复二叉搜索树题目描述解题思路解法1:显示中序遍历解法2:代码展示 题目描述 给定二叉搜索树的根节点root,该树种的两个节点被错误地交换。请在不改变其结构的情况下,恢复这棵树。 示例1 输入:root = [1,3,null,null,2] 输出:[3,1,null,null,2] 解释:3 不能是 1 左孩子,因为 3 > 1 。交换 1 和 3 使二叉搜索树有效。 示例2 输入:root = [3,1,4,null,null,2] 输出:[2,1,4,null,null,3] 解释:

小哲的博客 1497

【NodeRed】node-red-contrib-opcua实现PLC读写

在之前的博文【Node-RED】node-red-contrib-opcua-server模块使用(1)中,我们介绍了用node-red-contrib-opcua-server模块实现OPCUA服务端的,以及二次开发的内容。本节博文中我们采用官方社区自带的node-red-contrib-opcua组件开展对OPCUA客户端的介绍,详细阐述用该组件中OpcUa-Client节点实现客户端对PLC的读写,以及实现过程中遇到的问题。由于官方社区中并没有找到该组件的介绍实例,这也是本博文编写的第1个原因。

weixin_48618536的博客 958

LeetCode 98验证二叉搜素树(中序遍历)&99恢复二叉搜索树

验证二叉搜索树 给定一个二叉树,判断其是否是一个有效的二叉搜索树。 假设一个二叉搜索树具有如下特征: 节点的左子树只包含小于当前节点的数。 节点的右子树只包含大于当前节点的数。 所有左子树和右子树自身必须也是二叉搜索树。 示例 1: 输入: 2 / \ 1 3 输出: true 示例 2: 输入: 5 / \ 1 4 / \ 3 6 输出: false 解释: 输入为: [5,1,4,null,null,3,6]。 根节点的值

bigsai 4034

【DeepSeek开发入门】DeepSeek API 开发初体验

在人工智能蓬勃发展的时代,DeepSeek作为一款功能强大的AI大模型,为开发者提供了丰富的接口和便捷的开发体验。本文将基于DeepSeek的几个关键接口,带你快速入门,开启DeepSeek开发的探索之旅。通过本文,你已经初步了解了DeepSeek开发中几个重要接口的使用方法,包括列出模型、对话补全和查询余额接口,以及开发过程中的常见问题及解决办法。这是你踏入DeepSeek开发领域的第一步。在后续的学习中,你可以深入研究模型的参数调优,探索不同模型在各种场景下的应用,如利用模型实现更复杂的推理对话功能。

寻道AI,探索AI无限可能! 2755

如何理解下一代ERP 即:华为MetaERP

如何理解下一代ERP 即:华为MetaERP 华为的 MetaERP核心定位: 华为MetaERP是华为公司自主研发的下一代企业核心商业管理系统。它不仅仅是一个传统的ERP(企业资源规划)系统,更是一个面向未来、基于云原生、AI驱动、安全可信的企业核心管理平台。

金牌架构师 1142

力扣第99题恢复二叉搜索树

题目 题解 二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序树。二叉搜索树作为一种经典的数据结构,它既有链表的快速插入与删除操作的特点,又有数组快速查找的优势;所以应用十分广泛,例如在文件系统和数据库系统一般会采用这种数据结构进行高效率的排序与检索操作。(开源:百度百

weixin_43040618的博客 480

硬件工程师学习-硬件的单元测试(UT)(1)电源与时钟的测试

我们在设计的时候,通过控制电源的上电使能管脚或者通过MOSFET、或者专用的电源上电控制芯片,控制不同电源的上电时序,以确保每个芯片的电源上电时序是满足芯片的要求的。我们在测试的时候,需要对相关的要求一一测试,以确认每个上电时序满足要求的。在维基百科中,相位噪声的定义是“时域不稳定性(抖动)导致波形在相位上发生快速、短期、随机的波动,这种波动在频域中的表现即为相位噪声”。单元测试,一般是指基于开发人员自行开展的功能测试及各个功能单元的单元测试,是硬件信号级的测试,分为基本测试和信号完整性测试。

qq_43416206的博客 4033

leetcode—23.二叉搜索树题目leetcode总结

文章目录基本操作类题目235. 二叉搜索树的最近公共祖先450. 删除二叉搜索树中的节点669. 修剪二叉搜索树700. 二叉搜索树中的搜索701. 二叉搜索树中的插入操作基于中序遍历类题目 基本操作类题目 235. 二叉搜索树的最近公共祖先 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” 示例: 输

柳杰的博客 840

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Leetcode99. 恢复二叉搜索树

【代码】Leetcode99. 恢复二叉搜索树。

JavaAlliance 429

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

8月8日 力扣练习(Python3):第99:恢复二叉搜索树(困难)

链接:https://leetcode-cn.com/problems/recover-binary-search-tree arr[0] = 1 arr[0] = 4 node.val (3) < arr[0].val(4) 进入if (not arr[1]:)循环 arr[1] = 4 , arr[2] = 3 arr[0] = 3 node.val (2) < arr[0].val(3) 不满足if (not arr[1]:)循环 , arr[2] = 2 所以是 arr..

qq_41978942的博客 198

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

恢复二叉搜索树(99)

算法过程:对于二叉搜索树,它的中序遍历是val递增的序列。对于交换了其中的两个val, 存在2种情况,举一个例子,例如{1, 2, 3, 4, 5, 6, 7, 8},a.交换相邻的两个数字,譬如交换2,3,则序列为{1, 3, 2, 4, 5, 6, 7, 8},存在1个逆序关系(3->2);b.交换不相邻的两个数字,譬如交换2,5,则序列为{1, 5, 3, 4, 2, 6, 7, 8},则存在两个逆序关系(5->3,4->2 )。在代码中predecessor代表遍历的当前节点的前一个节点。

zhangsj1007的博客 291

C++实现LeetCode(99.复原二叉搜索树)

这篇文章主要介绍了C++实现LeetCode(99.复原二叉搜索树),本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下 [LeetCode] 99. Recover Binary Search Tree 复原二叉搜索树 Two elements of a binary search tree (BST) are swapped by mistake. Recover the tree without changing its structure. Examp

weixin_57218581的博客 227

LeetCode99. 恢复二叉搜索树:morris遍历100%+99%(17张图超详细的解析!!!!)

https://leetcode-cn.com/problems/recover-binary-search-tree/ 题意 给你二叉搜索树的根节点 root ,该树中的两个节点被错误地交换。请在不改变其结构的情况下,恢复这棵树。 进阶:使用 O(n) 空间复杂度的解法很容易实现。你能想出一个只使用常数空间的解决方案吗? 输入:root = [1,3,null,null,2] 输出:[3,1,null,null,2] 解释:3 不能是 1 左孩子,因为 3 > 1 。交换 1 和 3 使二叉搜索树

Demon_LMMan的博客 702

leetcode **99. 恢复二叉搜索树(待深究)(2020.8.8)

【题目】**99. 恢复二叉搜索树 二叉搜索树中的两个节点被错误地交换。 请在不改变其结构的情况下,恢复这棵树。 示例 1: 输入: [1,3,null,null,2] 1 / 3 \ 2 输出: [3,1,null,null,2] 3 / 1 \ 2 示例 2: 输入: [3,1,4,null,null,2] 3 / \ 1 4 / 2 输出: [2,1,4,null,null,3] 2 / \ 1 4 /

Sophia_fez的博客 373

Python小白 Leetcode刷题历程 No.96-No.100 不同的二叉搜索树、交错字符串、验证二叉搜索树、恢复二叉搜索树、相同的树 (有题干 有代码 有思路心得)

文章目录Python小白 Leetcode刷题历程 No.96-No.100 不同的二叉搜索树、交错字符串、验证二叉搜索树、恢复二叉搜索树、相同的树写在前面:No.96.不同的二叉搜索树No.97.交错字符串No.98.验证二叉搜索树No.99.恢复二叉搜索树No.100.相同的树 Python小白 Leetcode刷题历程 No.96-No.100 不同的二叉搜索树、交错...

LanXiu_的博客 546

[leetcode] 99. 恢复二叉搜索树

99. 恢复二叉搜索树 一开始想了好久没有什么好思路,去网上搜了一下,原来是中序遍历。 二叉搜索树的中序遍历是个(递增)有序数列,利用这个特性,我们可以很巧妙的解决这个题。 先看第二个例子,中序遍历后是:13245,观察发现只有一处发生了降序,只在第二位与第三位发生了降序情况,说明这两个数为异常数,交换3和2的位置重新中序遍历:12345 第一个例子,中序遍历是:321,观察发现有两处发生了降...

weixin_30929295的博客 86

Leetcode 99.恢复二叉搜索树

恢复二叉搜索树 二叉搜索树中的两个节点被错误地交换。 请在不改变其结构的情况下,恢复这棵树。 示例1: 输入: [1,3,null,null,2] 输出: [3,1,null,null,2] 示例2: 输入: [3,1,4,null,null,2] 输出: [2,1,4,null,null,3] 进阶: 使用 O(...

kexinxin1的博客 186

99. 恢复二叉搜索树

题解: 链接:https://leetcode-cn.com/problems/recover-binary-search-tree/solution/tu-jie-hui-fu-yi-ge-er-cha-sou-suo-shu-by-hyj8/ /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *...

INGNIGHT的专栏 196

LeetCode--二叉搜索树

LeetCode98. Validate Binary Search Tree验证二叉搜索树 一、题目 给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下: 节点的左子树只包含 小于 当前节点的数。 节点的右子树只包含 大于 当前节点的数。 所有左子树和右子树自身必须也是二叉搜索树。 示例 1: 输入:root = [2,1,3] 输出:true 示例 2: 输入:root = [5,1,4,null,null,3,6] 输出:false 解释

JINGYUSHAN的博客 7809

LeetCode(99):恢复二叉搜索树

Hard! 题目描述: 二叉搜索树中的两个节点被错误地交换。 请在不改变其结构的情况下,恢复这棵树。 示例1: 输入: [1,3,null,null,2] 1 / 3 \ 2 输出: [3,1,null,null,2] 3 / 1 \ 2 示例2: 输入: [3,1,4,null,null...

weixin_30439131的博客 99
上一篇: 牛客网NC46-20.8.7-贪心
下一篇: LeetCode93-20.8.9-复原IP地址
RedDevill
博客等级 码龄8年 2粉丝 54原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值