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
Ruby实现2-3树与集合操作
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



