平衡二叉树和红黑树最差情况分析
1.经典平衡二叉树
平衡二叉树(又称AVL树)是带有平衡条件的二叉查找树,使用最多的定理为:一棵平衡二叉树是其每个节点的左子树和右子树的高度最多差为1的二叉查找树。因为他是二叉树的一种具体应用,所以他同样具有二叉树的性质。例如,一棵满二叉树在第k层最多可拥有个节点(性质1)。一棵树的高度为其从根节点到最底层节点经过的路径数(例如只含一个节点的树的高度为0)(性质...
分类:
其他好文 时间:
2016-04-22 13:37:24
阅读次数:
646
平衡二叉树(AVL树) AVL树是一种二叉搜索树,并且每个节点的左右子树高度之差最多为1。AVL树是第一个在最坏的情况下保证以O(logn)的时间进行搜索,插入和删除操作的数据结构,AVL树能在对数时间内完成操作的主要思想是在插入和删除的时候花一些时间来保持树的平衡,使树的高度总在O(logn)范围 ...
分类:
其他好文 时间:
2016-04-16 21:32:30
阅读次数:
241
一、AVL树简介 AVL树是一种平衡的二叉查找树。 平衡二叉树(AVL 树)是一棵空树,或者是具有下列性质的二叉排序树: 1它的左子树和右子树都是平衡二叉树, 2且左子树和右子树高度之差的绝对值不超过 1。 定义平衡因子(BF)为该结点左子树的高度减去右子树的高度所得的高度差;AVL 树任一结点平衡 ...
分类:
其他好文 时间:
2016-04-14 22:18:21
阅读次数:
141
原文 其它较好的的介绍:堆排序 AVL树 树堆,在数据结构中也称Treap(事实上在国内OI界常称为Traep,与之同理的还有"Tarjan神犇发明的"Spaly),是指有一个随机附加域满足堆的性质的二叉搜索树,其结构相当于以随机数据插入的二叉搜索树。其基本操作的期望时间复杂度为O(logn)。相对 ...
分类:
其他好文 时间:
2016-04-07 20:44:01
阅读次数:
288
注:能用STL就尽量用STL 平衡二叉树(Balanced Binary Tree),又根据它的发明者命名为AVL树。 它或者是一颗空树,或者具有以下性质的二叉树:它的左子树和右子树的深度之差的绝对值不超过1,且它的左子树和右子树都是一颗平衡二叉树。 平衡因子(bf):结点的左子树的深度减去右子树的... ...
分类:
其他好文 时间:
2016-04-05 19:57:43
阅读次数:
365
AVL树即左右子树高度最多相差1的树。 其实现是每插入一个新节点,进行旋转来使二叉树平衡。 AVL的旋转可以说有两种情况, 第一种如图,进行一次单旋转(为右旋转),即把4变为根节点,4的左节点挂在原来的根节点2上。 其中一种如图,此时进行一次双旋转即可,右左旋转即可 ...
分类:
其他好文 时间:
2016-04-04 19:31:14
阅读次数:
171
1 .基本概念 AVL树的复杂程度真是比二叉搜索树高了整整一个数量级——它的原理并不难弄懂,但要把它用代码实现出来还真的有点费脑筋。下面我们来看看: 1.1 AVL树是什么? AVL树本质上还是一棵二叉搜索树(因此读者可以看到我后面的代码是继承自二叉搜索树的),它的特点是: 1. 本身首先是一棵二叉 ...
分类:
编程语言 时间:
2016-04-04 16:30:13
阅读次数:
276
AVL树的定义 一种自平衡二叉查找树,中面向内存的数据结构。 二叉搜索树T为AVL树的满足条件为: T是空树 T若不是空树,则TL、TR都是AVL树,且|HL-HR| key){ 90 root.left=insert(root.left,key); ... ...
分类:
其他好文 时间:
2016-03-28 18:35:02
阅读次数:
174
二叉查找树在最坏情况下高度可能为N-1,即插入元素时后插入的元素总比以前插入的元素大或者小。为了解决这种不平衡的情况,引入了平衡条件来限制树中节点的深度不能过深,其中最老的一种平衡树称为AVL树。这种树限制树中每个节点的左右子树的高度相差不能超过一。(另一种更严格的树限制节点的左右子树高度必须相等,
分类:
其他好文 时间:
2016-03-01 12:52:48
阅读次数:
236
本文辑录了《算法之美——隐匿在数据结构背后的语言》(电子工业出版社2016年出版)一书第8章后半部分至第9章之代码(P273~P320)。主要收录最小生成树的Prim算法、克鲁斯卡尔算法,以及二叉搜索树的实现。AVL树、红黑树、Trie树,正在袭来。全文目录、“45个算法”目录、“22个经典问题目录”,以及附录中的经典笔试、面试问题参考答案请见文内链接。...
分类:
编程语言 时间:
2016-02-22 16:03:58
阅读次数:
247