news 2026/4/30 14:52:14

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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);}};
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 5:46:56

Java计算机毕设之基于springboot的篮球管理系统的设计与实现基于springboot的篮球场地管理系统设计与实现(完整前后端代码+说明文档+LW,调试定制等)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/5/1 9:03:42

Java毕设选题推荐:基于springboot的篮球管理系统的设计与实现基于springboot的篮球论坛系统设计与实现【附源码、mysql、文档、调试+代码讲解+全bao等】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/5/1 8:02:49

论文写作AI工具横向评测:8大网站改写与降重能力解析

在AI论文工具的选择上&#xff0c;8款热门平台针对降重、降低AIGC检测率及论文写作等核心功能进行了实测对比&#xff0c;结合效率、准确性和用户体验的综合评估&#xff0c;以下排名基于客观数据与真实反馈得出&#xff0c;帮助用户快速匹配需求。排名工具名称关键优势1aibiye…

作者头像 李华
网站建设 2026/5/1 9:13:24

Kafka 消费者的负载均衡在大数据中的实现

Kafka 消费者的负载均衡在大数据中的实现 关键词:Kafka、消费者负载均衡、大数据、分区分配策略、协调器 摘要:本文深入探讨了 Kafka 消费者的负载均衡在大数据环境中的实现机制。首先介绍了 Kafka 及消费者负载均衡的背景知识,包括目的、预期读者、文档结构和相关术语。接着…

作者头像 李华
网站建设 2026/5/1 5:48:28

AUTOSAR网络管理节点状态机配置的实战操作指南

AUTOSAR网络管理节点状态机配置实战&#xff1a;从机制到调参的深度拆解你有没有遇到过这样的场景&#xff1f;整车下电后&#xff0c;某个ECU始终无法进入睡眠模式&#xff0c;导致静态电流超标&#xff0c;电池几天就被耗光&#xff1b;或者遥控解锁时&#xff0c;车灯响应慢…

作者头像 李华
网站建设 2026/5/1 6:57:09

基于Hadoop的社区流浪动物救助领养系统

前言基于Hadoop的社区流浪动物救助领养系统是一种创新的解决方案&#xff0c;旨在应对城市化进程中流浪动物数量上升所带来的挑战。以下是对该系统的详细介绍&#xff1a; 一、系统背景与意义 随着城市化进程的加速&#xff0c;社区内流浪动物的数量不断增加&#xff0c;给动物…

作者头像 李华