2-3平衡树学习笔记

学习红黑树还是先学习一下2-3平衡树,有助于红黑树的理解和学习。
基本概念和性质
2-3平衡树的2和3也就是所说的阶,举个例子2阶就是一个节点存一个值有两个子树,其中左子树全部小于根节点,右子树全部大于根节点,3阶就是一个节点存两个值,有三个子树,左子树全小于根节点的a值,右子树全大于根节点b值,中间子树就a全都介于a和b之间。
查找
和二叉搜索树类似,根据所查的值与当前节点的值的关系进行搜索。
插入
在插入之前先做一次查询,如果查到这个值就不再插入,否则返回最后遍历到的节点。
当树为空:
直接创建一个新的节点。
向2-节点中插入新节点:
将2-节点变为3-节点插入数据。
向一个只有一个3-节点的树插入新节点:
将3-节点临时变为4-节点,然后把它转化成由三个2-节点组成的2-3树,树的高度加一。
向父亲节点为2-节点的3-节点插入数据:
先插入数据将3-节点临时变成4-节点,然后分解4-节点,将中键值转移到父亲节点。
向父亲节点为2-节点的3-节点插入数据:
也是将该节点变为4-节点,然后一步一步网上调直到遇到一个2-节点,如果到根节点都是3节点,那么根节点变成4-节点然后转化为3个2-节点,树的高度加一。
删除
删除非叶子节点:
使用中序遍历下的后序节点来覆盖当前节点,再删除用来覆盖节点的key。
删除不为3-节点的叶子节点::
直接删除即可。
删除当前节点为2-节点叶子节点,父亲为2-节点,兄弟为3-节点
那么将父亲节点移到当前节点,然后将兄弟节点最接近当前节点的值移动到父亲节点。
删除当前节点2-节点叶子节点,父亲为2-节点,兄弟为2-节点
先通过移动兄弟节点中序的后继节点到兄弟节点,就变成上面的兄弟节点为3-节点的情况了。
删除当前节点为2-节点叶子节点,父亲为3-节点:
将父亲节点差分成2-节点,然后将与删除节点最接近的值移动到删除节点,之后删除即可。
当2-3树为满二叉树删除叶子节点:
删除当前节点,将当前删除节点的兄弟节点合并到父节点中,同时将父节点的所有兄弟节点合并到父节点的父节点中,如果生成了 4 - 节点,再分解 4 - 节点。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值