数据结构与算法分析 优先队列 模型 Insert(插入) == Enqueue(入队) DeleteMin(删除最小者) == Dequeue(出队) 基本实现 简单链表:在表头插入,并遍历该链表以删除最小元 时间代价昂贵 二叉查找树 二叉查找树支持许多不需要的操作,实现麻烦,不值得 最合适:二叉堆 ...
分类:
编程语言 时间:
2018-09-08 16:00:13
阅读次数:
200
红黑树: 红黑树(Red Black Tree) 是一种自平衡二叉查找树 : l 每个节点或者是黑色,或者是红色。 l 根节点是黑色。 l 每个叶子节点是黑色。 l 如果一个节点是红色的,则它的子节点必须是黑色的。 l 从一个节点到该节点的子孙节点的所有路径上包含相同数目的黑节点。 红黑树的各种操作 ...
分类:
其他好文 时间:
2018-09-06 03:01:05
阅读次数:
114
一、平衡二叉树是带有平衡条件的二叉查找树 平衡条件:平衡二叉树的每个结点的左子树和右子树的高度最多差1。 平衡因子 bf :左子树的高度减去右子树的高度,显然 bf 的取值范围是 [ -1, 1 ] 。每一个结点(在其结点结构中)保留平衡因子 bf 。 补:虽然平衡二叉树能确保树的高度为O(logn ...
分类:
其他好文 时间:
2018-09-01 22:00:10
阅读次数:
171
在学习算法的过程中,二叉平衡树是一定会碰到的,这篇博文尽可能简明易懂的介绍下二叉树的相关概念,然后着重讲下什么事平衡二叉树。 (由于作图的时候忽略了箭头的问题,正常的树一般没有箭头,虽然不影响描述的过程,但是还是需要注意,所以还请读者忽略一下部分图的箭头) 一、二叉(查找)树 二叉查找树(Binar ...
分类:
其他好文 时间:
2018-08-31 21:27:07
阅读次数:
169
文字描述 键树定义 键树又叫数字查找树,它是一棵度大于或等于2的树,树中的每个结点中不是包含一个或几个关键字,而是只含有组成关键字的符号。例如,若关键字是数值,则结点中只包含一个数位;若关键字是单词,则结点中只包含一个字母字符。从根到叶子结点的字符组成的字符串表示一个关键字,叶子结点中的特殊符号$表 ...
分类:
其他好文 时间:
2018-08-28 20:11:43
阅读次数:
128
Ps.我们遵循从感性到理性的认知顺序来逐步探索B-树的奥秘,之前经常说的value这里用key(关键码)指代,因为可能存的是字符串,说是value就不合适了。 (多图预警!!!建议在WI-FI下观看) 虽然迄今为止我们所看到的查找树皆为二叉树,但还有另一种常用的查找树与此相异,名为B- 树,又叫B树 ...
分类:
其他好文 时间:
2018-08-27 21:49:34
阅读次数:
201
二叉树: 1、每个结点不能多于两个子树; 2、一颗平衡二叉树的深度要比及结点个数N小得多。 二叉查找树: 1、结点x的所有左子树的值小于x,所有右子树的值大于x; AVL树: 1、一种带有平衡条件的二叉查找树; 2、每个结点的左子树和右子树深度最多差1。 红黑树: 1、树的颜色只能为红色或黑色的一种 ...
分类:
编程语言 时间:
2018-08-25 23:01:27
阅读次数:
176
二叉查找树的套路一般都是 先根据 root->val 和一些条件缩小范围。 本题中,如果 根节点小于L,递归右子树,如果大于R,递归左子树。如果在两者之间,表明root一定是符合要求的,递归左子树和右子树,并和root接起来。 时间复杂度 O(n),最多访问每个节点一次。 空间复杂度 O(h) 递归 ...
分类:
其他好文 时间:
2018-08-25 11:35:43
阅读次数:
137
AVL树得名于它的发明者。 AVL树是带有平衡条件的二叉查找树。这个平衡条件必须要容易保持,而且它须保证树的深度是O(logN)。 查找、插入和删除在平均和最坏情况下都是O(log n)。增加和删除可能需要通过一次或多次树旋转来重新平衡这个树。 AVL树本质上还是一棵二叉搜索树(因此读者可以看到我后 ...
分类:
其他好文 时间:
2018-08-23 12:06:17
阅读次数:
188
1 #include 2 #include 3 4 typedef struct TreeNode{ 5 int value; 6 struct TreeNode* Left; 7 struct TreeNode* Right; 8 }TreeNode; 9 10 void printTree(Tr... ...
分类:
其他好文 时间:
2018-08-23 00:25:57
阅读次数:
148