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

LC.99 | 恢复二叉搜索树 | 树 | 中序遍历找“逆序对”(定位两节点再交换)

输入:二叉搜索树根节点root,其中恰好有两个节点的值被错误交换

要求:在不改变树结构的情况下恢复 BST(只允许改节点值)。

输出:无(原地修改root)。


思路:

BST 的中序遍历应该是严格递增序列。
一旦有两个节点值被交换,中序序列里就会出现“乱序”,表现为逆序对

  • 正常:... a < b < c < d ...
  • 交换后可能出现:
    • 相邻交换:只出现1 次逆序(例如... a < c < b < d ...,在c > b处逆序)
    • 不相邻交换:出现2 次逆序(例如... a < d < c < b ...,会在d > cc > b两处逆序)

所以我们中序遍历时维护prev(上一个访问的节点):

  1. 若发现prev->val > node->val,说明出现逆序。
  2. 第一次逆序first = prev(大的那个)
  3. 每次逆序都更新second = node(小的那个)
    • 相邻交换:只会更新一次second
    • 不相邻交换:第二次逆序会把second更新成最终正确的小节点

遍历结束后交换firstsecond的值即可恢复。


复杂度:

  • 时间复杂度:O(N)
  • 空间复杂度:O(H)(递归栈,H 为树高)

classSolution{public:voidrecoverTree(TreeNode*root){first=nullptr;second=nullptr;prev=nullptr;inorder(root);if(first!=nullptr&&second!=nullptr){inttmp=first->val;first->val=second->val;second->val=tmp;}}private:TreeNode*first;TreeNode*second;TreeNode*prev;voidinorder(TreeNode*node){if(node==nullptr)return;inorder(node->left);if(prev!=nullptr&&prev->val>node->val){if(first==nullptr)first=prev;second=node;}prev=node;inorder(node->right);}};
http://www.jsqmd.com/news/125578/

相关文章:

  • MIPS/RISC-V ALU课程实验:快速理解数据通路
  • NetActuate扩建丹佛数据中心提升混合云与灾备能力
  • LC.173 | 二叉搜索树迭代器 | 树 | 中序展开/栈模拟
  • 2025最新内容整合营销、新媒体广告代运营、达人媒介采买、电商直播、流量投放首要推荐紫龙数科:全域赋能品牌增长,这家服务商实力领跑 - 全局中转站
  • Java毕设选题推荐:基于springboot的篮球管理系统的设计与实现基于springboot的篮球论坛系统设计与实现【附源码、mysql、文档、调试+代码讲解+全bao等】
  • 2025广州最新流量投放品牌TOP5评测!国内优质服务商威榜单发布,技术赋能品牌增长新生态 - 全局中转站
  • 程序员的伪年薪百万还能持续多久?
  • EconMate——面向大学生的经济学老师
  • springboot基于Java的大学校园水电管理系统的设计与实现
  • 基于Springboot企业进销存管理系统【附源码+文档】
  • 畅联云和智能物联中台UCC的关系
  • 12月22日日记
  • 深度学习<2>从“看单帧”到“懂故事”:视频模型的帧链推理,藏着机器读懂时间的秘密
  • 工业现场总线替代方案:SerialPort技术可行性分析
  • 多通道小动物代谢监控系统 小动物代谢监测系统 小动物代谢检测系统
  • 基于Hadoop的社区流浪动物救助领养系统
  • 乙酰化糖基化苏氨酸衍生物——糖肽合成与药物研发的关键中间体 CAS号: 878483-13-7
  • 专用蚊子苍蝇检测数据集(含背景样本):适用于目标检测任务
  • AI论文写作工具排名:8个网站测评,降重与创作功能解析
  • 基于Springboot社区物资申报系统【附源码+文档】
  • OpenMV识别物体结合WiFi传输的安防监控:项目实践
  • 基于python的网上商城比价系统(源码+vue+前后端分离)
  • 2025广州最新达人媒介采买服务商TOP5评测!国内优质品牌权威榜单发布,重构品牌营销增长新生态 - 全局中转站
  • AI论文降重与写作工具推荐:8个热门网站详细对比
  • 饮食饮水代谢检测系统 呼吸能量饮食饮水代谢检测系统 大鼠代谢系统 小鼠代谢系统
  • RISC与CISC思想体现:arm64 amd64原理级对比
  • 【毕业设计】基于springboot的篮球管理系统的设计与实现(源码+文档+远程调试,全bao定制等)
  • AUTOSAR网络管理节点状态机配置的实战操作指南
  • paperzz AI:把毕业论文从 “渡劫” 变成 “一键通关”?这届毕业生偷偷用它省了 300 小时
  • 网络流算法