二叉搜索树(一)概念一个二叉搜索树是一个节点有序的二叉树,(1)根的左分支节点值都小于根节点的值(2)右分支节点值都大于根节点值(3)所有子树也都是二叉搜索树自平衡二叉搜索树平衡二叉树:一个所有叶子节点的深度差不超过1的二叉搜索树自平衡二叉搜索树:是指其操作都试图维持平衡的二叉搜索树红黑树红黑树是一...
分类:
其他好文 时间:
2015-01-18 20:53:43
阅读次数:
206
http://www.cnblogs.com/yangecnu/p/3627386.html前面一篇文章介绍了2-3查找树,可以看到,2-3查找树能保证在插入元素之后能保持树的平衡状态,最坏情况下即所有的子节点都是2-node,树的高度为lgN,从而保证了最坏情况下的时间复杂度。但是2-3树实现起来...
分类:
编程语言 时间:
2015-01-18 18:27:08
阅读次数:
354
红黑树有五条规则,本文主要就这五条规则给出一个图文的说明...
分类:
其他好文 时间:
2015-01-16 23:53:39
阅读次数:
326
红黑树
时间限制:3000 ms | 内存限制:65535 KB
难度:3
描述
什么是红黑树呢?顾名思义,跟枣树类似,红黑树是一种叶子是黑色果子是红色的树。。。
当然,这个是我说的。。。
《算法导论》上可不是这么说的:
如果一个二叉查找树满足下面的红黑性质,那么则为一个红黑树。
1)每个节点或是红的,或者是黑的。
2)每个叶子节点...
分类:
其他好文 时间:
2015-01-16 22:30:55
阅读次数:
162
STL中map的底层为红黑树,所以查找的时间复杂度为O(logn)。
unordered_map是根据哈希值(遇到哈希值相同时用==号比较)寻找键,所以时间复杂度为O(1)。
键类型为自定义类型时,map需要重载键类型的<符号,unordered_map需要定义键类型的哈希函数(在类外定义),以及重载键类型的==符号。...
分类:
其他好文 时间:
2015-01-16 13:13:04
阅读次数:
184
原文:经典算法题每日演练——第七题 KMP算法 在大学的时候,应该在数据结构里面都看过kmp算法吧,不知道有多少老师对该算法是一笔带过的,至少我们以前是的,
确实kmp算法还是有点饶人的,如果说红黑树是变态级的,那么kmp算法比红黑树还要变态,很抱歉,每次打kmp的时候,输
入法总是提示“看毛片”三...
分类:
编程语言 时间:
2015-01-16 12:39:04
阅读次数:
139
Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map内部数据的组织,map内部自建一颗红黑树(一种非严格意义上的平...
分类:
其他好文 时间:
2015-01-14 19:39:26
阅读次数:
239
二叉搜索树是红黑树的基础。
关于红黑树的链接:
http://blog.csdn.net/v_JULY_v/article/details/6105630
linux kernel 源码中关于红黑树的链接:
https://github.com/torvalds/linux/blob/master/lib/rbtree.c
https://github.com/torvalds/linu...
分类:
其他好文 时间:
2015-01-14 15:41:08
阅读次数:
206
红黑树是建立在二叉查找树的基础之上的,关于二叉查找树可以参看【算法导论】二叉搜索树的插入和删除和【算法导论】二叉树的前中后序非递归遍历实现。对于高度为h的二叉查找树而言,它的SEARCH、INSERT、DELETE、MINIMUM、MAXIMUM等操作的时间复杂度均为O(h)。所以在二叉查找树的高度较高时,上述操作会比较费时,而红黑树就可以解决这种问题。...
分类:
编程语言 时间:
2015-01-14 12:49:51
阅读次数:
1480
一、问题描述实现3种树中的两种:红黑树,AVL树,Treap树二、算法原理(1)红黑树红黑树是一种二叉查找树,但在每个结点上增加一个存储位表示结点的颜色,可以是red或black。红黑树满足以下五个性质:1) 每个结点或是红色或是黑色2) 根结点是黑色3) 每个叶结点是黑的4)如果一个结点是红的,则...
分类:
编程语言 时间:
2015-01-14 06:11:18
阅读次数:
287