Leetcode 99. 恢复搜索二叉树
Time: 20190901题目描述二叉搜索树中的两个节点被错误地交换。请在不改变其结构的情况下恢复这棵树。示例 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/\14/2输出: [2,1,4,null,null,3]2/\14/3进阶:使用 O(n) 空间复杂度的解法很容易实现。你能想出一个只使用常数空间的解决方案吗来源力扣LeetCode链接https://leetcode-cn.com/problems/recover-binary-search-tree著作权归领扣网络所有。商业转载请联系官方授权非商业转载请注明出处。思路搜索过程中重建。根据搜索二叉树的形状在DFS遍历过程中如果出现当前结点比左孩子小或者比右孩子大时就考虑交换。但是当前视角是局部的交换之后会对上面产生影响又需要重新再过滤。其实解决方法很简单用中序遍历的结果来判断即可。在中序遍历序列中第一个错误的结点是在当前值大于后面的值取当前结点。第二个错误的结点是在当前值大于后面的值取后面结点。用全局变量跟踪两个结点然后交换值即可。代码# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val x# self.left None# self.right NoneclassSolution:defrecoverTree(self,root:TreeNode)-None: Do not return anything, modify root in-place instead. self.firstNoneself.secondNoneself.preTreeNode(float(-inf))definorder(root):ifnotroot:returninorder(root.left)ifself.preandself.pre.valroot.val:ifnotself.first:self.firstself.pre self.secondroot self.preroot inorder(root.right)inorder(root)self.first.val,self.second.valself.second.val,self.first.valEND.

相关新闻

简单总结面向对象

简单总结面向对象

面向对象 (Object Oriented,OO) 面对对象的思想对软件开发相当重要,它的概念和应用甚至已超越了程序设计和软件开发,扩 展到如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD 技术、人工智能等领域。面向对象是一种 对现实…

2026/11/1 20:20:16 阅读更多 →
[数据结构]一般顺序表部分总结

[数据结构]一般顺序表部分总结

部分顺序表算法的总结。Min/Max 顺序表使用下标i记录位置&#xff0c;链表使用指针Min/Max来指向对应结点。 int Min0; for(int i1;i<n;i){if(data[i]<data[Min])Mini; } //顺序表Node *MinL; Node *pL; while(p){if(p->data<Min->data)Minp;pp->next; } …

2026/10/28 2:32:41 阅读更多 →
Pearcleaner:macOS终极清理解决方案,开源工具彻底释放磁盘空间

Pearcleaner:macOS终极清理解决方案,开源工具彻底释放磁盘空间

Pearcleaner&#xff1a;macOS终极清理解决方案&#xff0c;开源工具彻底释放磁盘空间 【免费下载链接】Pearcleaner A free, source-available and fair-code licensed mac app cleaner 项目地址: https://gitcode.com/gh_mirrors/pe/Pearcleaner macOS系统清理一直是M…

2026/10/31 9:39:12 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年&#xff0c;我大部分时间都在跟浏览器标签页打交道&#xff0c;直到第一次把桌面应用跑起来&#xff0c;才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词&#xff0c;最开始是在某段时间频繁出现在同事的讨论里&#xff0c;一个用HTML…

2026/11/4 1:35:24 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介&#xff1a;亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档&#xff0c;主要面向智能锁安装人员、终端用户及售后维护者&#xff0c;帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件&#xff0c;大小4.37MB&#xff0c;内容结构清晰&#xff…

2026/11/3 10:57:27 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统&#xff0c;整车要求空载跑到8m/s&#xff0c;电机转速已经拉到额定点&#xff0c;驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令&#xff0c;转速纹丝不动&#xff0c;三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/3 11:35:49 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年&#xff0c;用它写过嵌入式驱动、做过游戏服务端&#xff0c;也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词&#xff0c;我其实挺感慨的——这门语言的难点从来不是语法多&#xff0c;而是知识点之间的耦合太深…

2026/11/4 6:23:50 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介&#xff1a;亚太天能T109滑盖智能锁产品说明书以PDF格式发布&#xff0c;适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开&#xff0c;先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能&#xff0c;再给出完整安装步骤&…

2026/11/3 10:47:27 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历&#xff1a;翻开源码注释、论文摘要或者一份专业报告&#xff0c;每个字都认识&#xff0c;连在一起却像天书。想找人聊聊&#xff0c;身边要么没人懂&#xff0c;要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型&#xff0c;几秒钟之后&a…

2026/11/3 10:57:33 阅读更多 →

日新闻

周新闻

月新闻