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

平衡树(未完待续)

一、引入:二叉搜索树

平衡树实际为一种二叉搜索树(BST)。
对于一棵BST满足如下定义:

  • 空树为一棵BST。
  • 若根左子树非空,则左子树键值均小于根节点。
  • 若根右子树非空,则右子树键值均大于根节点。
  • 根左子树与右子树均为BST。

1. 插入操作

从根节点出发,让插入元素与当前节点键值进行比较,小于则向左递归,大于则向右递归,重复如此操作,直到找到合适的位置。
但若插入元素与某一节点键值相等该如何处理?对于严格BST,我们禁止出现重复键值,但我们可以进行处理:

  • 若元素大于等于则向右递归(或小于等于向左),但当出现大量重复元素会导致树的平衡性出现问题。
  • 我们可以给每个节点添加一个计数,当递归到重复键值节点,则当前节点计数加一(下文均以此方式进行插入,不做过多赘述)。

2. 删除操作

设删除节点计数为cnt,若cnt==0,则并不存在此节点,若cnt>1,则cnt--即可。
否则

  • 若为叶子节点,直接删除。
  • 若为只有一个儿子的链节点,用儿子顶替。
  • 若有两个儿子,用左子树最大键值节点(或右子树最小键值节点)\(u\)的键值替换删除节点,易得\(u\)至多有一个子节点,即为链节点或叶子结点,对\(u\)进行删除操作即可。

3. 查询操作

http://www.sczhlp.com/news/341.html

相关文章:

  • 告别FTP!跨网文件安全交换系统让数据流转0风险
  • CVE-2018-8715 AppWeb认证绕过漏洞 (复现)
  • 树04
  • 周进度报告1
  • 白话Docker系列(二):用Web应用实例深入容器
  • svn强制添加已忽略文件
  • 跨网文件交换新方案:合规审批+传输加密双保障!
  • FastMcp 案例四(Streamable-http)
  • 数仓ETL建设思路
  • SSH-Agent 启用失败问题
  • Django模型开发:模型字段、元数据与继承全方位讲解
  • 矿山领航者:向明智控如何通过CRM实现数字化升级
  • BeanFactory和FactoryBean的区别
  • DevOps工具进化论:2025年国内开发者如何选择最佳技术栈
  • E. Split Into Two Sets
  • 2025.7.28学习日记
  • BSC 验证者获取接口的时间差问题分析 - 若
  • 教师资格证考试笔试报名流程
  • linux RabbitMq 消息队列
  • TheHackersLabs Torrijas writeup
  • 蔚来汽车携手通义灵码入选 2025 世界人工智能大会标杆案例
  • CRMEB会员电商系统高可用集群部署实战:阿里云COS静态资源分离方案详解
  • 麦当劳 - 1
  • 一个简单的文字特效
  • openGauss关于日期的计算注意事项
  • 一文带你全面了解教师资格证
  • 小飞标签
  • P6246 邮局题解
  • [lnsyoj2085] 底垫
  • 病从口入,祸从口出