内容: 1、平衡二叉树 2、典型搜索二叉树原理(AVL树、红黑树、SB树) 3、旋转 -- Rebalance 4、Java中红黑树的使用 1、平衡二叉树 2、典型搜索二叉树原理(AVL树、红黑树、SB树) 3、旋转 -- Rebalance 4、Java中红黑树的使用 ...
分类:
其他好文 时间:
2019-01-29 23:05:42
阅读次数:
150
AVL树:平衡的二叉搜索树,其子树也是AVL树。 以下是我实现AVL树的源码(使用了泛型): ...
分类:
编程语言 时间:
2019-01-27 14:31:00
阅读次数:
184
调整过程基本都在子树内完成,指针不需要一直向上回溯,相比 AVL 树,AVL 树在删除节点时,指针有可能会一直回溯到根为止
分类:
编程语言 时间:
2019-01-24 15:06:29
阅读次数:
126
AVL(Adelson Velskii和Landis)树是带有平衡条件(balance condition)的二叉查找树。这个平衡条件必须要容易保持,而且它保证树的深度须是O($$log{N}$$)。最简单的想法是要求左右子树具有相同的高度。 另一个平衡条件是要求每个节点都必须有相同高度的左子树和右 ...
分类:
其他好文 时间:
2019-01-21 16:06:12
阅读次数:
193
为什么选择跳表 目前经常使用的平衡数据结构有:B树,红黑树,AVL树,Splay Tree, Treep等。 想象一下,给你一张草稿纸,一只笔,一个编辑器,你能立即实现一颗红黑树,或者AVL树 出来吗? 很难吧,这需要时间,要考虑很多细节,要参考一堆算法与数据结构之类的树, 还要参考网上的代码,相当 ...
分类:
其他好文 时间:
2019-01-14 14:48:03
阅读次数:
161
假设一个二叉查找树中的数据都是链式的(即都集中在左子树或者右子树),那么这时候对该二叉查找树进行查找的时间复杂度就是$O(n)$,背离了二叉查找树用来优化数据查询的目的。而平衡二叉树可以使树的高度在每次插入元素后,查询操作仍然能保持$O(logn)$的时间复杂度。 对平衡二叉树的任意结点来说,要保证 ...
分类:
其他好文 时间:
2019-01-11 20:07:12
阅读次数:
221
平衡树 平衡树有AVL树、红黑树、2-3树、2-3-4树 AVL树 AVL树是最早的一种平衡树,它以发明者的名字命名。 特征 在AVL树中节点的左子树和右子树的高度差不会大于1 实现 在AVL树中每个节点都存储着一个额外的数据,它的左子树和右子树的高度差,这个差值不能大于1。插入一个元素后,检查该元 ...
分类:
其他好文 时间:
2019-01-03 17:25:17
阅读次数:
194
AVL树即平衡二叉树,每个结点有一个平衡因子,即左子树高度减去右子树高。每插入一个结点时,从根部开始按二叉排序树的方法,与节点不断比较,按大小向左右子树插入。在与最后的节点比较后插入时,若有兄弟节点,说明树的高度没有变,此时依然平衡;若没有,则小范围内树高改变了,需回溯,依次更改祖先的平衡因子,若遇 ...
分类:
其他好文 时间:
2018-12-30 12:07:34
阅读次数:
236
插值查找是二分查找的改进,斐波那契查找是插值查找的改进。 二分查找:mid=(low+high)/ 2 插值查找:mid=(key-a[low])*(high-low)/ (a[high]-a[low]) 斐波那契查找主要思想是只要长度符合斐波那契数列,则该段数字可以用两个子段来分割,F(k)-1= ...
分类:
其他好文 时间:
2018-12-26 00:32:21
阅读次数:
142