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;
}
分析:
本题要将错误交换的两个数交换回来,即可能有两种情况,一是两个值所在的节点相邻,只有一对错误值,将错误值的两个数交换位置即可,二是两个值所在的节点不相邻,即有两对错误值,将第一对错误值前面的数和第二对错误值后面的数交换位置即可解决。
总结:
本题考察二叉树交换值的应用,分类讨论错误的情况再加以解决即可做出
相关文章:
leetcode做题笔记99. 恢复二叉搜索树
给你二叉搜索树的根节点 root ,该树中的 恰好 两个节点的值被错误地交换。请在不改变其结构的情况下,恢复这棵树 。 思路一:模拟题意 int midOrder(struct TreeNode **pre, struct TreeNode **err1, struct TreeNode **err2, struct TreeNo…...
24 | 紧跟时代步伐:微服务模式下API测试要怎么做?
微服务架构(Microservice Architecture) 微服务是一种架构风格。在微服务架构下,一个大型复杂软件系统不再由一个单体组成,而是由一系列相互独立的微服务组成。其中,各个微服务运行在自己的进程中,开发和部…...
【论文阅读】POIROT:关联攻击行为与内核审计记录以寻找网络威胁(CCS-2019)
POIROT: Aligning Attack Behavior with Kernel Audit Records for Cyber Threat Hunting CCS-2019 伊利诺伊大学芝加哥分校、密歇根大学迪尔伯恩分校 Milajerdi S M, Eshete B, Gjomemo R, et al. Poirot: Aligning attack behavior with kernel audit records for cyber thre…...
K8S cluster with multi-masters on Azure VM
拓扑参考: 在 Azure VM 实例上部署 KubeSphere 基础模板 需要修改 IP 地址和 VM Image的可以在模板中修改。 {"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#","contentVersion": &q…...
初阶c语言:趣味扫雷游戏
目录 前言 制作菜单 构建游戏选择框架 实现游戏功能 模块化编程:查看前节三子棋的内容 初始化雷区 编辑 优化棋盘 随机埋入地雷 点击后的决策 实现此功能代码 game();的安排 前言 《扫雷》是一款大众类的益智小游戏&…...
JVM——内存模型
1.java内存模型 1.1 原子性 1.2 问题分析 这里与局部变量自增不同,局部变量调用iinc是在局部变量表槽位上进行自增。 静态变量是在操作数栈自增。 这里的主内存和工作内存时再JMM里的说法。 因为操作系统是时间片切换的多个线程轮流使用CPU. 1.3解决方法 JMM中…...
java八股文面试[JVM]——元空间
JAVA8为什么要增加元空间 为什么要移除永久代? 知识来源: 【2023年面试】JVM8为什么要增加元空间_哔哩哔哩_bilibili...
科技云报道:云计算下半场,公有云市场生变,私有云风景独好
科技云报道原创。 大数据、云计算、人工智能,组成了恢弘的万亿级科技市场。这三个领域,无论远观近观,都如此性感和魅力,让一代又一代创业者为之杀伐攻略。 然而高手过招往往一瞬之间便已胜负知晓,云计算市场的巨幕甫…...
Oracle 如何给大表添加带有默认值的字段
一、讲故事 你是否遇到过开发人员添加字段,导致数据库锁表问题? 但是令开发疑惑的事,他们添加字段,有的时候很快,有的时候很慢? 为什么呢? 询问得知,**加的慢时候是带上了default默…...
记录Taro大坑2丢失api无法启动
现象 解决方案 看了很多。很多说要改成一致的版本号。其实没什么用。 正确方案 再新建一个模板跑起来对比config的配置,以及package.json发现关闭预编译即可。预编译导致api丢失...
Java-Maven-解决maven deploy时报 401 Reason Phrase Unauthorized 错误
Java-Maven-解决maven deploy时报 401 Reason Phrase Unauthorized 错误 环境 Java JDK 1.8Maven 3.3.9 引言 项目需要打成jar包上传到私服,供其它项目引用。此时需要执行 mvn clean deploy 命令,执行过程中报 401 错误。 解决401错误 报错信息 执…...
【数据结构】 栈(Stack)的应用场景
文章目录 🌏前言🍀改变元素的序列🚩场景一📌解析: 🚩场景二📌解析: 🎍将递归转化为循环🌳[括号匹配](https://leetcode.cn/problems/valid-parentheses/)&…...
人力资源小程序的设计原则与实现方法
随着移动互联网的快速发展,小程序成为了各行各业推广和服务的新利器。对于人力资源行业来说,开发一款定制化的小程序不仅可以提升服务效率,还可以增强品牌形象和用户粘性。那么,如何定制开发人力资源类的小程序呢?下面…...
检查Javascript对象数组中是否存在对象值,如果没有向数组添加新对象
需求: 如果我有以下对象数组: [ { id: 1, username: fred }, { id: 2, username: bill }, { id: 2, username: ted } ]有没有办法循环遍历数组,以检查特定的用户名值是否已经存在,如果它什么都不做,但是如果它没有用…...
UG\NX二次开发 使用录制功能录制操作记录时,如何设置默认的开发语言?
文章作者:里海 来源网站:王牌飞行员_里海_里海NX二次开发3000例,C\C,Qt-CSDN博客 简介: NX二次开发使用BlockUI设计对话框时,如何设置默认的代码语言? 效果: 方法: 依次打开“文件”->“实用…...
【业务功能篇83】微服务SpringCloud-ElasticSearch-Kibanan-docke安装-应用层实战
五、ElasticSearch应用 1.ES 的Java API两种方式 Elasticsearch 的API 分为 REST Client API(http请求形式)以及 transportClient API两种。相比来说transportClient API效率更高,transportClient 是通过Elasticsearch内部RPC的形式进行请求…...
VBJSON报错:缺少:语句结束
项目中使用JSON库VBJSON时报错: 编译错误:缺少:语句结束 cJSONScript和cStringBuilder报相同的错误,都在第一行: VERSION 1.0 CLASS 研究了半天没啥结果,之前使用这个库的时候没有什么问题,所以判定是当前…...
Docker安装ES+kibana8.9.1
参考:基于Docker安装Elasticsearch【保姆级教程、内含图解】_docker elasticsearch_Acloasia的博客-CSDN博客 创建网络 docker network create es-net 基于Docker安装Elasticsearch 拉取镜像 docker pull elasticsearch:8.9.1 挂载文件 mkdir -p /usr/local/e…...
12. Oracle中case when详解
格式: case expression when condition_01 then result_01 when condition_02 then result_02 ...... when condition_n then result_n else result_default end 表达式expression符合条件condition_01,则返回…...
【电路设计】220V AC转低压DC电路概述
前言 最近因项目需要,电路板上要加上一个交流220V转低压直流,比如12V或者5V这种。一般来说,比较常见也比较简单的做法是使用一个变压器将220V AC进行降压,比如降到22V AC,但是很遗憾的是,支持220V的变压器一般体积很大,而板子留给电源部分的面积又非常有限,所以不得不研…...
多功能 PEG 衍生物 Ergosterol-PEG-MAL,Ergosterol-PEG-Maleimide详解
试剂基本信息中文名称:麦角固醇-聚乙二醇-马来酰亚胺英文名称:Ergosterol-PEG-MAL,Ergosterol-PEG-Maleimide分子量:0.4k,0.6k,1k,2k,3.4k,5k,10k,…...
FreeRTOS任务优先级怎么设?从智能健康助手项目看LVGL、传感器、看门狗任务的调度实战
FreeRTOS任务优先级设计实战:智能健康助手的调度艺术 在嵌入式系统开发中,任务优先级设置往往决定了整个系统的响应性和稳定性。我曾在一个智能健康监测设备项目中,面对LVGL界面、多传感器数据采集和系统监控等多任务协同工作的挑战…...
Joy-Con Toolkit开源工具:Switch手柄深度定制与性能优化方案
Joy-Con Toolkit开源工具:Switch手柄深度定制与性能优化方案 【免费下载链接】jc_toolkit Joy-Con Toolkit 项目地址: https://gitcode.com/gh_mirrors/jc/jc_toolkit Joy-Con Toolkit是一款面向任天堂Switch玩家的开源手柄管理工具,提供专业级传…...
储能系统海量时序数据边缘侧清洗:基于微服务架构的死区过滤与数据语境化实现
摘要: 针对新能源储能现场底层总线高频轮询(如 50ms 采集间隔)所引发的海量数据洪流,传统的数据全量透传模型不仅会迅速耗尽 4G/5G 流量配额,更会造成云端时序数据库的写入雪崩。本文深度分享一种在具有充沛边缘算力且…...
MPU9250 I²C驱动库深度解析与嵌入式工程实践
1. MPU9250 IC驱动库技术解析与工程实践指南 MPU9250是InvenSense(现为TDK子公司)推出的高性能9轴运动传感器,集成3轴陀螺仪、3轴加速度计和3轴磁力计,广泛应用于无人机姿态解算、可穿戴设备运动追踪、机器人SLAM前端感知等嵌入式…...
ai赋能开发:在快马平台用自然语言描述,自动生成java swing计算器代码
最近想用Java Swing开发一个图形化计算器,但作为初学者对Swing库不太熟悉。好在发现了InsCode(快马)平台,它内置的AI辅助开发功能帮我轻松解决了这个问题。整个过程就像有个编程助手在实时指导,特别适合我这种想快速实现功能但又不想深陷语法…...
OpenClaw多模型切换:千问3.5-9B与本地Llama混合调用
OpenClaw多模型切换:千问3.5-9B与本地Llama混合调用 1. 为什么需要多模型混合调用? 去年冬天,当我第一次尝试用OpenClaw自动生成周报时,发现一个有趣的现象:用同一个模型处理代码片段和文案内容,效果差异…...
从理论到实践:百川2-13B模型权重加载与推理过程代码解读
从理论到实践:百川2-13B模型权重加载与推理过程代码解读 你是不是也遇到过这种情况:好不容易找到一个开源大模型,比如百川2-13B,兴冲冲地下载下来,结果面对那一堆模型权重文件和复杂的代码,瞬间就懵了&…...
如何通过Winhance实现Windows系统全方位优化?从入门到精通的完整指南
如何通过Winhance实现Windows系统全方位优化?从入门到精通的完整指南 【免费下载链接】Winhance-zh_CN A Chinese version of Winhance. C# application designed to optimize and customize your Windows experience. 项目地址: https://gitcode.com/gh_mirrors/…...
QGIS里怎么加载NASA的SRTM高程数据?从下载到3D可视化的保姆级教程
QGIS实战:从NASA SRTM高程数据下载到3D地形可视化全流程指南 当你第一次在QGIS中看到那些起伏的山脉、蜿蜒的河谷以三维形式呈现时,那种将地理数据转化为视觉故事的成就感是无与伦比的。NASA的SRTM(航天飞机雷达地形测绘任务)高程…...
