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

leetcode做题笔记99. 恢复二叉搜索树

给你二叉搜索树的根节点 root ,该树中的 恰好 两个节点的值被错误地交换。请在不改变其结构的情况下,恢复这棵树 

思路一:模拟题意

int midOrder(struct TreeNode **pre, struct TreeNode **err1, struct TreeNode **err2, struct TreeNode *root)
{if (root == NULL) return 0;if (midOrder(pre, err1, err2, root->left) == -1) return -1;if (*pre != NULL && (*pre)->val > root->val) {if (*err1 == NULL) {*err1 = *pre;*err2 = root;} else {*err2 = root;return -1;}}*pre = root;if (midOrder(pre, err1, err2, root->right) == -1) return -1;return 0;
}void recoverTree(struct TreeNode* root){struct TreeNode *pre = NULL;struct TreeNode * err1 = NULL;struct TreeNode * err2 = NULL;midOrder(&pre, &err1, &err2, root);int tmp;tmp = err1->val;err1->val = err2->val;err2->val = tmp;return;
}

分析:

本题要将错误交换的两个数交换回来,即可能有两种情况,一是两个值所在的节点相邻,只有一对错误值,将错误值的两个数交换位置即可,二是两个值所在的节点不相邻,即有两对错误值,将第一对错误值前面的数和第二对错误值后面的数交换位置即可解决。

总结:

本题考察二叉树交换值的应用,分类讨论错误的情况再加以解决即可做出

http://www.lryc.cn/news/140040.html

相关文章:

  • 24 | 紧跟时代步伐:微服务模式下API测试要怎么做?
  • 【论文阅读】POIROT:关联攻击行为与内核审计记录以寻找网络威胁(CCS-2019)
  • K8S cluster with multi-masters on Azure VM
  • 初阶c语言:趣味扫雷游戏
  • JVM——内存模型
  • java八股文面试[JVM]——元空间
  • 科技云报道:云计算下半场,公有云市场生变,私有云风景独好
  • Oracle 如何给大表添加带有默认值的字段
  • 记录Taro大坑2丢失api无法启动
  • Java-Maven-解决maven deploy时报 401 Reason Phrase Unauthorized 错误
  • 【数据结构】 栈(Stack)的应用场景
  • 人力资源小程序的设计原则与实现方法
  • 检查Javascript对象数组中是否存在对象值,如果没有向数组添加新对象
  • UG\NX二次开发 使用录制功能录制操作记录时,如何设置默认的开发语言?
  • 【业务功能篇83】微服务SpringCloud-ElasticSearch-Kibanan-docke安装-应用层实战
  • VBJSON报错:缺少:语句结束
  • Docker安装ES+kibana8.9.1
  • 12. Oracle中case when详解
  • 【电路设计】220V AC转低压DC电路概述
  • 网络地址转换NAT-动态NAT的使用范围和配置-思科EI,华为数通
  • 远程连接虚拟机中ubuntu报错:Network error:Connection refused
  • 快速排序三种思路详解!
  • 【二叉树入门指南】链式结构的实现
  • 【位运算】算法实战
  • C++构建系统
  • “深入探索JVM内部机制:理解Java虚拟机的运行原理“
  • java八股文面试[JVM]——双亲委派模型
  • NLP与大模型主题全国师资培训班落地,飞桨持续赋能AI人才培养
  • Jupyter Notebook 配置根目录
  • 算法 位运算