当前位置: 首页 > 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、二叉树的后序遍历 ,非递归迭代实现

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

相关文章:

  • 5分钟快手入门laravel邮件通知
  • iOS——Block two
  • Ubuntu出现内部错误解决办法
  • 2023年中职组“网络安全”赛项吉安市竞赛任务书
  • ELK日志分析系统介绍及搭建(超详细)
  • docker 资源限制
  • HCIP 交换综合实验--企业三层架构
  • 微服务的基础使用
  • opencv-29 Otsu 处理(图像分割)
  • 网络中通过IP地址查找位置
  • MyBatis的动态SQL语句
  • 交互式AI技术与模型部署:bert-base-chinese模型交互式问答界面设置
  • Edge浏览器安装vue devtools
  • zookeeper基础
  • 【C++】类与对象(2)
  • 数据结构——绪论
  • Docker Dockerfile 语法与指令
  • 【LeetCode每日一题】——566.重塑矩阵
  • Manim(一款强大的数学可视化动画引擎)学习历程
  • powershell脚本写一个托盘图标
  • 前端Vue入门-day08-vant组件库
  • 华为OD机考--【磁盘容量排序】
  • 实现弧形切角两种方式
  • 什么是强化学习?
  • 如何在Linux系统上安装cpolar内网穿透
  • 分布式软件架构——内容分发网络
  • 【HAL库】STM32CubeMX开发----STM32F407----LAN8720A----移植FreeModbus实现ModbusTCP
  • 11-矩阵(matrix)_方阵_对称阵_单位阵_对角阵
  • AWS多账户单点登录 IAM Identity Center(AWS SSO)
  • 实验2-3-3 求奇数分之一序列前N项和 (15 分)