二叉查找树(binary search tree,又叫二叉搜索树或者二叉排序树)是一种非常重要的数据结构,许多高级树结构都是二叉查找树的变种,例如AVL树、红黑树等,理解二叉查找树对于后续树结构的学习有很好的作用。同时利用二叉查找树可以进行排序,称为二叉排序,也是很重要的一种思想。本文主要参考算法导论,详细介绍二叉查找树的原理及具体的python和java代码实现。1.定义查找树是一种数据结构,它支...
分类:
其他好文 时间:
2016-06-24 15:28:13
阅读次数:
130
介绍另一种平衡二叉树:红黑树(Red Black Tree),红黑树由Rudolf Bayer于1972年发明,当时被称为平衡二叉B树(symmetric binary B-trees),1978年被Leonidas J. Guibas 和 Robert Sedgewick改成一个比较摩登的名字:红黑树。
红黑树和之前所讲的AVL树类似,都是在进行插入和删除操作时通过特定操作保持二叉查找树的平衡...
分类:
其他好文 时间:
2016-06-21 06:51:19
阅读次数:
171
/******************
环境:http://anycodes.cn/zh/
AVL有高度标签
红黑树更有颜色标记
http://blog.csdn.net/whucyl/article/details/17289841
我们总是以ABC3个结点为例子插入元素后C总是不平衡的
LLRR较为简单交换后C还是出于下方
LRRL统一的一句就是C总提出交换子树,要翻..
分类:
其他好文 时间:
2016-06-19 18:35:09
阅读次数:
264
AVL树是高度平衡的二叉树,任何节点的两个子树的高度差别<=1 实现AVL树 定义一个AVL树,AVLTree,定义AVLTree的节点内部类AVLNode,节点包含以下特性: 1.key——关键字,对AVL树的节点进行排序 2.left——左子树 3.right——右子树 4.height——高度 ...
分类:
编程语言 时间:
2016-06-19 18:24:35
阅读次数:
187
AVL树是高度平衡的而二叉树。它的特点是:AVL树中任何节点的两个子树的高度最大差别为1。旋转如果在AVL树中进行插入或删除节点后,可能导致AVL树失去平衡。这种失去平衡的可以概括为4种姿态:LL(左左),LR(左右),RR(右右)和RL(右左)。下面给出它们的示意图:1) LL:LeftLeft,也称为”左左”。插入或删除一个节点后,根节点的左子树的左子树还有非空子节点,导致”根的左子树的高度”比...
分类:
其他好文 时间:
2016-06-16 14:52:27
阅读次数:
137
1. 概述 红黑树(Red Black Tree) 是一种自平衡二叉查找树,红黑树和AVL树类似,都是在进行插入和删除操作时通过特定操作保持二叉查找树的平衡,从而获得较高的查找性能。 它虽然是复杂的,但它的最坏情况运行时间也是非常良好的,并且在实践中是高效的: 它可以在O(log n)时间内做查找,插入和删除,这里的n 是树中元素的数目。2. 性质 红黑树是每个节点都带有颜色属性的二叉查找树,颜...
分类:
其他好文 时间:
2016-06-12 16:57:51
阅读次数:
195
1. AVL树 AVL树中任何节点的两个子树的高度最大差别为一,所以它也被称为高度平衡树。查找、插入和删除在平均和最坏情况下都是O(log n)。增加和删除可能需要通过一次或多次树旋转来重新平衡这个树。 节点的平衡因子是它的左子树的高度减去它的右子树的高度(有时相反)。带有平衡因子1、0或 -1的节点被认为是平衡的。带有平衡因子 -2或2的节点被认为是不平衡的,并需要重新平衡这个树。平衡因子可以...
分类:
其他好文 时间:
2016-06-12 16:55:00
阅读次数:
177
由于自己最近在看STL中的hash_table,被它精巧的设计所折服。无论是对桶子个数的确定,对链表的维护方式,以及判断元素在哪个桶子里等等方法都考虑到了方方面面。所以自己写了篇总结。
hash_table存储数据的特性
二叉树,AVL树,RB_tree等数据结构各有各的用途,并且具有对数平均时间,但之所以有这样高的效率取决于输入的数据有足够的随机性,那么hash_table这种数...
分类:
其他好文 时间:
2016-06-12 03:16:15
阅读次数:
292
一.AVLTree的性质1.左子树和右子树的高度差不超过12.左右子树都是AVL树3.每一个节点都有一个平衡因子,任一点的平衡银子为(-1,0,1)二.AVL树的效率log2n三.AVLTreeNodetemplate<classK,classV>
structAVLTreeNode
{
AVLTreeNode<K,V>*_parent;
AVLTreeNode<..
分类:
其他好文 时间:
2016-06-09 22:28:23
阅读次数:
274
C - 万恶的二叉树 Crawling in process... Crawling failed Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Status Practice HDU 2193 ...
分类:
其他好文 时间:
2016-06-09 20:56:55
阅读次数:
167