算法5-1:平衡查找树之二三树
来源:互联网 发布:淘宝战网点 编辑:程序博客网 时间:2024/06/05 08:08
平衡查找树的目标是实现查找、插入、删除操作在最坏情况下的复杂度均为logN。
本节将介绍二三查找树。
二三树中有两种节点:
二节点对应一个键,有两个子节点
三节点对应两个键,有三个子节点
二三查找树非常平衡,每个空节点到根节点的距离都是一样的 。
查找操作
在二三树中查找一个键的时候有以下规则:
如果是二节点,二节点对应1个值,如果要查找的值比该节点对应的值小,就往左侧深入,反之亦成
如果是三节点,三节点对应2个值,如果比两个值都小,就往左侧深入,如果介于两个值之间,就往中间深入,如果比两个值都大,就往右侧深入。
插入操作
根据查找操作的规则,先定位到需要插入的节点。如果是二节点,那么将二节点中增加一个键成为三节点。如果是三节点,在三节点中增加1个键成为四节点。由于四节点不允许在二三树中出现,因此需要分解成两个二节点,并且把中间的键提取到父节点中。下图展示四节点分解的过程:
现在要在这棵树中插入一个值7
首先根据查找操作的规则定位到要插入的节点,定位之后是如图所示的节点
由于该节点是三节点,因此插入一个键,使它成为四节点
由于四节点不允许在2-3树中存在,因此需要将其分解为两个二节点,并把中间的键7提到父节点中
这样插入操作就完成了
性能
2-3树的高度介于lgN和log_3(N)之间,因此能够保证所有的操作复杂度均在logN以下
实现
二三树的实现非常复杂,因为要判断每个节点的类型,插入节点的时候还需要判断插入节点的位置,需要考虑的情况非常多。
0 0
- 算法5-1:平衡查找树之二三树
- 《算法》-3.3平衡查找树(1)
- 【算法和数据结构】平衡查找树之B树
- 浅谈算法和数据结构: 九 平衡查找树之红黑树
- 浅谈算法和数据结构: 九 平衡查找树之红黑树
- 浅谈算法和数据结构: 九 平衡查找树之红黑树
- 浅谈算法和数据结构: 九 平衡查找树之红黑树
- 浅谈算法和数据结构: 九 平衡查找树之红黑树
- 浅谈算法和数据结构: 九 平衡查找树之红黑树
- 浅谈算法和数据结构: 九 平衡查找树之红黑树
- 浅谈算法和数据结构: 九 平衡查找树之红黑树
- 浅谈算法和数据结构: 九 平衡查找树之红黑树
- 浅谈算法和数据结构: 九 平衡查找树之红黑树
- 经典算法和数据结构(三): 平衡查找树之红黑树
- 浅谈算法和数据结构: 九 平衡查找树之红黑树
- 浅谈算法和数据结构: 九 平衡查找树之红黑树
- 浅谈算法和数据结构: 平衡查找树之红黑树
- 浅谈算法和数据结构: 九 平衡查找树之红黑树
- asp.net mvc 多个提交按钮
- atoi
- 通配符与正则表达式
- unity 编辑器的制作(二)
- html 复制 问题。
- 算法5-1:平衡查找树之二三树
- 用objectC完成的一个有关压缩,加解密的粗糙之作
- 抽象基类
- Onvif事件处理模块之基本通知接口模式(NVC部分)
- Android Xposed得到性能数据
- py2exe打包python脚本
- DM8168调试之ASSERT (ipcFramesOutLink_tsk.c|IpcFramesOutLink_copyFrameInfo|275)解决
- 【网络协议】ICMP协议、Ping、Traceroute
- duplicate symbol 错误的解决办法