news 2026/7/14 3:27:47

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/7/12 2:46:32

饮食饮水代谢检测系统 呼吸能量饮食饮水代谢检测系统 大鼠代谢系统 小鼠代谢系统

动物代谢监测系统具有多通量、实时统计、自动化、高准确性等优点&#xff0c;极大地提高了药物研发和基础生命科学研究的效率&#xff0c;并从根本上减少手工操作带来数据偏差及误差。在动物无拘束状态下&#xff0c;进行多通道测量,记录软件能实时统计大小鼠的饮食量、饮水量、…

作者头像 李华
网站建设 2026/7/9 10:29:31

智能论文改写工具推荐,8款AI平台助你轻松完成写作

目前市面上有多款AI论文辅助工具&#xff0c;通过对8个主流平台的综合评测发现&#xff0c;这些工具在论文降重、降低AI生成内容检测率以及辅助写作等方面各具特色&#xff0c;根据实际测试结果和用户评价显示&#xff0c;其性能表现主要取决于处理效率、内容准确度及操作便捷性…

作者头像 李华
网站建设 2026/7/14 14:54:32

基于SpringBoot+Spark+vue的在线广告推荐系统

前言 在线广告推荐系统的研究与开发从理论上讲&#xff0c;该系统涉及数据挖掘、机器学习、用户行为分析等多个前沿领域&#xff0c;为研究者提供了一个综合性的研究课题。通过不断优化推荐算法&#xff0c;可以推动相关理论的发展&#xff0c;特别是在大数据处理和实时推荐技术…

作者头像 李华
网站建设 2026/7/5 8:41:29

上位机是什么意思?图文并茂的新手教程

上位机是什么&#xff1f;一文搞懂工业控制中的“大脑”角色你有没有在工厂里见过这样的场景&#xff1a;一个操作员坐在电脑前&#xff0c;轻点几下鼠标&#xff0c;整条生产线就开始有序运转&#xff1b;屏幕上跳动着各种曲线、仪表盘和报警信息&#xff0c;仿佛一切尽在掌握…

作者头像 李华
网站建设 2026/7/14 20:40:09

你了解‌板卡控制的架构吗?‌板卡控制和PLC控制有什么区别

‌板卡控制在智能制造、能源管理、医疗研发等领域均有所使用&#xff0c;由此可见‌板卡控制的重要性。为增进大家对‌板卡控制的认识&#xff0c;本文将对‌板卡控制的架构与功能以及‌板卡控制与PLC控制的区别予以介绍。如果你对‌板卡控制具有兴趣&#xff0c;不妨继续往下阅…

作者头像 李华
网站建设 2026/7/13 6:06:01

AI论文降重与写作工具推荐:8个热门网站详细对比

在众多AI论文工具中&#xff0c;选择一款适合自己需求的平台可能令人眼花缭乱。本文将对比8款热门工具&#xff0c;重点聚焦降重、降AIGC率、写论文等功能。工具排名基于实测数据和用户反馈&#xff0c;确保客观实用性。以下是简要排行表&#xff08;基于效率、准确性和易用性&…

作者头像 李华