#lang scheme
( define nil '() )
( define ( root tree )( car tree ) )
( define ( left-tree tree )( cadr tree ) )
( define ( right-tree tree )( caddr tree ) )
( define ( height tree )
( con...
分类:
其他好文 时间:
2014-08-05 22:45:53
阅读次数:
244
AVL树是最先发明的自平衡二叉查找树。在AVL树中任何节点的两个子树的高度最大差别为一,所以它也被称为高度平衡树。查找、插入和删除在平均和最坏情况下都是O(logn)。增加和删除可能需要通过一次或多次树旋转来重新平衡这个树。AVL树得名于它的发明者G.M. Adelson-Velsky和E.M. L...
分类:
其他好文 时间:
2014-08-03 23:03:06
阅读次数:
273
AVL的构建(插入操作)---《数据结构》严蔚敏...
分类:
其他好文 时间:
2014-08-03 20:40:45
阅读次数:
212
平衡二叉树在进行插入操作的时候可能出现不平衡的情况,AVL树即是一种自平衡的二叉树,它通过旋转不平衡的节点来使二叉树重新保持平衡,并且查找、插入和删除操作在平均和最坏情况下时间复杂度都是O(log n)
AVL树的旋转一共有四种情形,注意所有旋转情况都是围绕着使得二叉树不平衡的第一个节点展开的。
1. LL型
平衡二叉树某一节点的左孩子的左...
分类:
其他好文 时间:
2014-08-01 19:50:02
阅读次数:
226
平衡二叉树定义(AVL):它或者是一颗空树,或者具有以下性质的二叉树:它的左子树和右子树的深度之差的绝对值不超过1,且它的左子树和右子树都是一颗平衡二叉树。
平衡因子(bf):结点的左子树的深度减去右子树的深度,那么显然-1
很显然,平衡二叉树是在二叉排序树(BST)上引入的,就是为了解决二叉排序树的不平衡性导致时间复杂度大大下降,那么AVL就保持住了(BST)的最好时间复杂度O(lo...
分类:
其他好文 时间:
2014-08-01 19:49:22
阅读次数:
296
给出动态更新数据,实时问第K个大的数值是什么?
利用AVL数据结构做的一个统计数,比较高级的数据结构内容了。
不知道题目给出的数据值是否有重复,因为我下面的程序是可以处理出现数据重复的情况的。
其中的奥妙是增加了repeat的信息,可以知道出现了当前数组多少次。
主要是知道如何维护这些数据和如何查询,维护数据的函数是pushUp,查询函数是selectKth。
其他就是一般的AVL操作。...
分类:
其他好文 时间:
2014-08-01 00:07:00
阅读次数:
273
大二上的时候,写过一个AVL的操作演示,今天一看Splay,发现和AVL其实一样,加上线段树的基础,懒惰标记什么都知道,学起来轻松许多哦
我参考的模板来自这里 http://blog.csdn.net/u013480600/article/list/2
里面有大量的ch[r][0] ch[r][1]等 我建议用宏定义取代,写的时候方括号少打了很多,等做的题多得时候,我再把自己使用的模板发来
...
分类:
其他好文 时间:
2014-07-30 17:43:44
阅读次数:
263
二叉查找树查找插入和删除的时间复杂度都为O(log N)。但它有个弊端。如果输入的数据是排序数据,那么代价巨大,因为树将只由那么没有左(或右)儿子的节点组成。一种解决方法是找平衡条件:任何节点的深度不能过深。最老的一种平衡查找树,即AVL树。另外,较新的方法是放弃平衡条件,允许树有任何的深度,但是在每次操作之后要使用一个调整规则进行调整,使得后面的操作效率更高,这是自调整类结构,例如伸展树。
...
分类:
其他好文 时间:
2014-07-30 17:29:14
阅读次数:
344
实现: 1 #ifndef AVL_TREE_H 2 #define AVL_TREE_H 3 4 #include "dsexceptions.h" 5 #include // For NULL 6 using namespace std; 7 8 // AvlTree...
分类:
其他好文 时间:
2014-07-24 10:01:43
阅读次数:
317
RB-tree(红黑树)
--------------------------------------------------------------------------
平衡二叉搜索树 --> 平衡可提高搜索效率
常见的平衡二叉搜索树有:
AVL-tree(任何节点的左右子树高度相差最多 1)、红黑树、AA-tree
AVL-tree
破坏平衡的情况及恢复平衡的方法
恢复时要先找到失去平衡的点
外侧插入 --> 单旋转
内侧插入 --> 双旋转
图5-10
图5-11
图5-12
红黑树是...
分类:
其他好文 时间:
2014-07-22 22:34:33
阅读次数:
316