2-3树是最简单的B-树(或-树)结构,其每个非叶节点都有两个或三个子女,而且所有叶都在统一层上。2-3树不是二叉树,其节点可拥有3个孩子。不过,2-3树与满二叉树相似。若某棵2-3树不包含3-节点,则看上去像满二叉树,其所有内部节点都可有两个孩子,所有的叶子都在同一级别。另一方面,2-3树的一个内部节...
多路查找树---2-3树和2-3-4树的深入理解 引言 二叉排序树简单的实现在多数情况能够达到预期的查找效率,但是每个节点只能存储一个元素和只能有两个孩子,使得在大量数据下会造成二叉排序树的深度特别大,那么在进行查找时多次的访问会造成查找效率的下降,同时,在对二叉查找树进行插入时,可能会破坏二叉查找树的平衡。
2-3树是在原来AVL树的基础上提出一种新的树结构,我们都知道二叉搜索树可以加速查询操作,而AVL树在二叉搜索树的基础上限制了高度差(树高 <= 1),从而使得AVL高度平衡。但是根据前面数据结构与算法之平衡二叉树所介绍,AVL树在插入、删除操作方面会引起结构的变化,从而导致结构的多次调整(左旋右旋)。 从没有平衡限制...
2-3树的查询操作 与二叉搜索树十分类似,2-3的查询操作定义如下: 1. 递归的退出条件(k是想要查找的关键字,T是查找到的那个节点) a) T是空,返回False b) T是叶子节点:如果 T 的值是 k,返回True 2. 递归的情况 a) k <= T.leftMax: 继续查找左子树 ...
实现 直接实现2-3树比较复杂,因为: 需要处理不同的节点类型,非常繁琐 需要多次比较操作来将节点下移 需要上移来拆分4-node节点 拆分4-node节点的情况有很多种 2-3查找树实现起来比较复杂,在某些情况插入后的平衡操作可能会使得效率降低。在2-3查找树基础上改进的红黑树不仅具有较高的效率,并且实现起来较2-3查找...
正是因为每个节点有2个或3个孩子,所以才叫2-3树。 所谓的2-3树满足二叉树的基本性质是指:在2-3树中,2节点的左孩子小于根节点,右孩子大于根节点;3节点的左孩子小于根节点的第一个元素,中间孩子的大小在两个根节点元素之间,右孩子元素大于根节点的第二个元素。
2-3树的实现初探 前篇文章(2-3树的实现分析)已经分析了2-3树的遍历(traverse),检索(retrieve),插入(insert)和删除(delete)的算法,经过三天的努力,我在分析的基础上采用回溯的方式实现了2-3树,由于还在初级阶段,肯定会出现不少的问题,请多赐教。但经过测试,运行还算正确。下面是代码实现:...
为了实现一个既平衡又相对简单的树形结构,于是有人就想到了把二叉树和2-3 B树给结合起来,取二叉树的存储结构和2-3 B树的操作逻辑,用二叉树来模拟2-3 B树,于是红黑树就诞生了,这样红黑树就既实现了存储结构简单又实现了平衡的效果。红黑树的定义也就比较好理解了,就是为了保证红黑树在逻辑上是一颗2-3 B 树...
操作步骤:先临时将新键存入唯一的 3- 节点中,使其成为一个 4- 节点,再将它转化为一颗由 3 个 2- 节点组成的 2-3 树,分解后树高会增加 1。 图解: img 向一个父节点为 2- 节点的 3- 节点中插入新节点 操作步骤:先构造一个临时的 4- 节点并将其分解,分解时将中键移动到父节点中(中键移动后,其...