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

【C++】BSTree 模拟笔记

文章目录

  • 概念
  • 插入和删除
  • 非递归实现中的问题
  • 递归中的引用简化
  • 相关OJ复习直达

概念

  由下面二叉搜索树的性质可以知道,中序遍历它便可以得到一个升序序列,查找效率高,小于往左找,大于往右走。最多查找高度次,走到到空,还没找到,这个值不存在

插入和删除



  替换法,即找该删除结点中左子树中的最大结点或者右子树的最小结点,进行替换,再删除该结点,这样可以保证二叉树的搜索性,使该结点删除后,还是二叉搜索树

非递归实现中的问题



  下面这里删除13和14都是属于同一类型,13的左孩子为nullptr则,让13的父亲指向13的右孩子。删除14的时候,14的左孩子不为nullptr,则让14的父亲指向14的左孩子。这里很明显我们要记录删除结点的父结点,同时,还要判断删除结点是父节点的左孩子还是右孩子。若删除的孩子有左右孩子,那么我们的先找个孩子替换它,这个孩子必须是左子树的最大孩子,或者右子树的最小孩子,再像删除13和14一样删除这个结点

递归中的引用简化

  在递归的时候传引用,便可以解决,判断删除结点是父结点的左孩子还是右孩子问题。我们不需要再记录父结点。通过下面这个案例来加深理解,传引用赋值的话,10的右指针直接指向14的左孩子13,如果不传引用赋值的话,那么10的右指针保存的地址不变,还是14结点地址,而14结点被delete掉了,再次访问就会报错

相关OJ复习直达


1、二叉树的分层遍历2

2、二叉树搜索树转换成排序双向链表

3、根据二叉树的前序和中序遍历结果还原该二叉树

4、根据二叉树的中序和后序遍历结果还原该二叉树

5、二叉树的前序遍历,非递归迭代实现

6、二叉树中序遍历 ,非递归迭代实现

7、二叉树的后序遍历 ,非递归迭代实现

相关文章:

【C++】BSTree 模拟笔记

文章目录 概念插入和删除非递归实现中的问题递归中的引用简化相关OJ复习直达 概念 由下面二叉搜索树的性质可以知道,中序遍历它便可以得到一个升序序列,查找效率高,小于往左找,大于往右走。最多查找高度次,走到到空&am…...

5分钟快手入门laravel邮件通知

第一步: 生成一个邮件发送对象 php artisan make:mail TestMail 第二步: 编辑.env 添加/修改(没有的key则添加) MAIL_DRIVERsmtp MAIL_HOSTsmtp.163.com (这里用163邮箱) MAIL_PORT25 (163邮箱…...

iOS——Block two

Block 的实质究竟是什么呢?类型?变量?还是什么黑科技? Blocks 是 带有局部变量的匿名函数 Blocks 由 OC 转 C 源码方法 在项目中添加 blocks.m 文件,并写好 block 的相关代码。打开「终端」,执行 cd XX…...

Ubuntu出现内部错误解决办法

使用的Ubuntu版本是18.04,使用的时候弹出对话框说出现了内部错误,好奇是哪里出现了错误,查找了一下解决的办法,记录一下。 参考解决方案:ubantu出现了内部错误 一旦程序崩溃过一次,就会生成一个.crash文件…...

2023年中职组“网络安全”赛项吉安市竞赛任务书

2023年中职组“网络安全”赛项 吉安市竞赛任务书 一、竞赛时间 总计:360分钟 竞赛阶段 竞赛阶段 任务阶段 竞赛任务 竞赛时间 分值 A模块 A-1 登录安全加固 180分钟 200分 A-2 本地安全策略配置 A-3 流量完整性保护 A-4 事件监控 A-5 服务加固…...

ELK日志分析系统介绍及搭建(超详细)

目录 一、ELK日志分析系统简介 二、Elasticsearch介绍 2.1Elasticsearch概述 三、Logstash介绍 四、Kibana介绍 五、ELK工作原理 六、部署ELK日志分析系统 6.1ELK Elasticsearch 集群部署(在Node1、Node2节点上操作) 6.2部署 Elasticsearch 软件 …...

docker 资源限制

目录 1、CPU使用率 2、CPU共享比例 3、CPU周期限制 4、CPU核心限制 5、CPU 配额控制参数的混合案例 6、内存限制 7、Block IO 的限制 8、限制bps 和iops docker资源限制 Docker容器技术底层是通过Cgroup(Control Group 控制组)实现容器对物理资…...

HCIP 交换综合实验--企业三层架构

题目 1、内网IP地址使用172.16.0.0/26分配 2、SW1和SW2之间互为备份 3、VRRP/STP/VLAN/Eth-trunk均使用 4、所有PC均通过DHCP获取IP地址 5、ISP只能配置IP地址 6、所有电脑可以正常访问ISP路由器环回 实验步骤 第一步、规划IP地址 R1-R2:100.1.1.0/24 R2-LSW1…...

微服务的基础使用

微服务 Maven的依赖冲突解决方案: 路径最短原则 配置优先原则 破坏规则则使用排除 SpringBoot场景启动器starter的开发流程 c3p0-spring-boot-starter自定义场景启动器 test-c3p0调用自定义场景启动器 SpringBoot自动装配 SpringBoot应用启动原理 nacos服务治…...

opencv-29 Otsu 处理(图像分割)

Otsu 处理 Otsu 处理是一种用于图像分割的方法,旨在自动找到一个阈值,将图像分成两个类别:前景和背景。这种方法最初由日本学者大津展之(Nobuyuki Otsu)在 1979 年提出 在 Otsu 处理中,我们通过最小化类别内…...

网络中通过IP地址查找位置

display ip routing-table 查看路由表 display vlan 查看vlan 信息 display stp brief 查看生成树信息 display mac-address 查看mac 地址表 display arp 查看arp表 SW1 SW2...

MyBatis的动态SQL语句

文章目录 前言LocalDate数据库代码po 包 ifwhere 标签 查trim 标签 增set 标签 改foreach 标签 删 前言 提示:这里可以添加本文要记录的大概内容: 查询条件是动态的 MyBatis的动态SQL语句是指在运行时根据不同条件选择不同的SQL语句执行。 这些条件可…...

交互式AI技术与模型部署:bert-base-chinese模型交互式问答界面设置

使用Gradio实现Question Answering交互式问答界面,首先你需要有一个已经训练好的Question Answering模型,这里你提到要使用bert-base-chinese模型。 Gradio支持PyTorch和TensorFlow模型,所以你需要将bert-base-chinese模型转换成PyTorch或Te…...

Edge浏览器安装vue devtools

1. 下载地址 GitHub - vuejs/devtools: ⚙️ Browser devtools extension for debugging Vue.js applications. 2. 下载后的压缩包解压并打开文件夹,右键选择:git bush here 3. 安装依赖 npm install 4. 成功安装依赖后打包 npm run build...

zookeeper基础

安装 https://archive.apache.org/dist/zookeeper/zookeeper-3.5.7/ 命令 bin/zkServer.sh start bin/zkServer.sh stop bin/zkServer.sh status bin/zkCli.sh ll / quit 各个配置项的含义: tickTime:每个时钟周期的毫秒数。ZooKeeper使用一个内部…...

【C++】类与对象(2)

文章目录 前言一、类的6个默认成员函数二、构造函数1.概念2.特性3.初始化列表 三、析构函数1.概念2.特性 四、拷贝构造函数1.概念2.特性 五、赋值运算符重载1.运算符重载2.赋值运算符重载3.前置和后置重载 六、取地址及const取地址操作符重载总结 前言 在前面,给大…...

数据结构——绪论

一、绪论 (一)基本概念 数据:数据是对客观事物的符号表示,在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。 数据元素:数据元素是数据的基本单位,在计算机程序中通常作为一个整…...

Docker Dockerfile 语法与指令

一、简介 Docker 镜像原理、容器转成镜像 随便找个案例,进入 https://hub.docker.com/ 搜索 centos,然后随便找个版本(例如:centos7)点击一下,就会进入 centos7 的 dockerfile 文件: // 空镜像…...

【LeetCode每日一题】——566.重塑矩阵

文章目录 一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【题目提示】七【解题思路】八【时间频度】九【代码实现】十【提交结果】 一【题目类别】 矩阵 二【题目难度】 简单 三【题目编号】 566.重塑矩阵 四【题目描述】 在 MATLAB 中&…...

Manim(一款强大的数学可视化动画引擎)学习历程

相逢情便深,恨不相逢早 第一眼看见上面这种类型的视频我就深深被它的简约清楚所折服,我觉得它完全符合我的审美,我也相信只要了解过制作这种视频的软件的人都会喜欢上它。运用这种风格比较有名的是b站里的一位up主名叫3Blue1Brown&#xff0…...

【限时解禁】微软VS Code IntelliCode内核逆向文档(含未公开的Symbol Graph Embedding协议v3.2)

第一章:智能代码生成原理与架构解析 2026奇点智能技术大会(https://ml-summit.org) 智能代码生成并非简单地拼接模板或检索已有片段,而是基于大规模代码语料训练的深度语言模型,对编程意图进行语义建模、上下文感知推理与结构化输出控制的系…...

“一句话就能毁掉一个人?”AI 正在接管网络暴力识别,但真相更复杂

友友们好! 我是Echo_Wish,我的的新专栏《Python进阶》以及《Python!实战!》正式启动啦!这是专为那些渴望提升Python技能的朋友们量身打造的专栏,无论你是已经有一定基础的开发者,还是希望深入挖掘Python潜力的爱好者,这里都将是你不可错过的宝藏。 在这个专栏中,你将会…...

从零到一:C语言编程入门实战指南(附50+经典例题解析)

从零到一:C语言编程入门实战指南(附50经典例题解析) 1. 为什么选择C语言作为编程起点? 在计算机科学教育体系中,C语言始终占据着不可替代的基础地位。作为1972年由Dennis Ritchie开发的编程语言,它不仅是…...

Zotero-OCR实战指南:让扫描PDF秒变可搜索文献

Zotero-OCR实战指南:让扫描PDF秒变可搜索文献 【免费下载链接】zotero-ocr Zotero Plugin for OCR 项目地址: https://gitcode.com/gh_mirrors/zo/zotero-ocr 还在为那些古老的扫描版PDF文献无法搜索而烦恼吗?Zotero-OCR插件就是你的救星&#xf…...

Genesis文件导出避坑指南:如何正确导出Panel和钻孔层(附常见错误解决方案)

Genesis文件导出避坑指南:如何正确导出Panel和钻孔层(附常见错误解决方案) 在PCB设计领域,Genesis作为一款专业的CAM软件,其文件导出功能直接影响着后续生产环节的顺利进行。许多工程师在项目交付前的关键时刻&#x…...

3步掌握Zotero中文文献管理:Jasminum插件实用指南

3步掌握Zotero中文文献管理:Jasminum插件实用指南 【免费下载链接】jasminum A Zotero add-on to retrive CNKI meta data. 一个简单的Zotero 插件,用于识别中文元数据 项目地址: https://gitcode.com/gh_mirrors/ja/jasminum 你是否在为Zotero无…...

从激活烦恼到无忧使用:KMS_VL_ALL_AIO如何让你的Windows和Office重获新生

从激活烦恼到无忧使用:KMS_VL_ALL_AIO如何让你的Windows和Office重获新生 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 你是否曾经历过这样的场景:正赶着重要的项目报告…...

tracetcp终极指南:免费TCP路由追踪工具快速上手

tracetcp终极指南:免费TCP路由追踪工具快速上手 【免费下载链接】tracetcp tracetcp. Traceroute utility that uses tcp syn packets to trace network routes. 项目地址: https://gitcode.com/gh_mirrors/tr/tracetcp 你是否曾经遇到过这样的困境&#xf…...

Python金融数据自动化终极指南:5分钟掌握同花顺问财API实战技巧

Python金融数据自动化终极指南:5分钟掌握同花顺问财API实战技巧 【免费下载链接】pywencai 获取同花顺问财数据 项目地址: https://gitcode.com/gh_mirrors/py/pywencai PyWenCai是一个专为金融数据分析和量化投资设计的Python工具库,通过简洁的A…...

音频像素工坊应用案例:快速制作播客配音与歌曲伴奏提取

音频像素工坊应用案例:快速制作播客配音与歌曲伴奏提取 1. 音频像素工坊简介 音频像素工坊是一款融合现代语音合成(TTS)与频谱分离技术(UVR)的音频处理工具,采用90年代复古像素风格设计。这款工具将专业音…...