24、Ruby 数据结构与算法:2 - 3 树和集合

Ruby实现2-3树与集合操作

Ruby 数据结构与算法:2 - 3 树和集合

2 - 3 树

2 - 3 树是一种完全平衡的搜索树,它能保证插入、删除和搜索操作的时间复杂度不超过 O(lg n)。

2 - 3 树的节点结构
  • 2 - 节点 :包含一个值和两个子树。
  • 3 - 节点 :包含两个值和三个子树。

在 2 - 3 树中,节点中的值大于其左子树中的任何值,且小于其右子树中的任何值,这使得 2 - 3 树成为搜索树。同时,所有 2 - 3 树都是完全平衡的,即从叶子节点到根节点的任何路径长度都相同,这个长度就是树的高度。

2 - 3 树的删除操作

删除操作需要从根节点开始搜索到树的底部,这个过程需要 O(lg n) 的时间。如果需要对树进行转换以处理 1 - 节点(即只有一个子树的节点),则对于从删除节点到根节点路径上的最多 h 个节点(h 为树的高度),每个节点的操作次数是常数。因此,这些修改操作最多需要 O(lg n) 的时间。所以,2 - 3 树的删除操作和搜索、插入操作一样,时间复杂度为 O(lg n)。

例如,当删除一个节点时,如果该 1 - 节点(删除发生的叶子节点)有一个 2 - 节点兄弟节点和一个 2 - 节点父节点,它必须从父节点借用一个值,并与兄弟节点合并成一个 3 - 节点,此时父节点变为 1 - 节点。如果这个 1 - 节点父节点有一个 3 - 节点兄弟节点,它可以从兄弟节点借用一个值。

g
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值