作为二叉排序树,红黑树具有如下5个性质: 1 所有结点的颜色是红色或者黑色。 2 根结点是黑色。 3 所有的叶子结点(包含NULL)是黑色。 4 每个红色的结点的孩子结点必须是黑色。 5 从任意结点出发,到其所有叶子结点的简单路径上都包含相同数量的黑色结点。 它确保没有一条路径会比其他路径长1倍。因 ...
分类:
其他好文 时间:
2018-01-28 15:35:58
阅读次数:
151
一、性质 ①节点是红色或者黑色。 ②根节点是黑色。 ③叶节点(NIL)是黑色。 ④红色节点的孩子是黑色。 ⑤从任意节点到叶节点的路径包含相同数量的黑色节点。 注:红黑树的叶节点为空节点。 二、操作 ①左旋 ②右旋 三、插入 将红黑树作为普通的二叉搜索树进行插入,插入节点默认涂为红色。 插入情况如下: ...
分类:
其他好文 时间:
2018-01-28 13:47:35
阅读次数:
97
HashMap: 默认不初始化hash表,在put时才初始化开辟16个容量的数组,扩展因子3/4。 新容量 和 扩展锚点: newCap = oldCap << 1 newThr = oldThr << 1;【初始化oldCap =16 ;oldThr =12】 hash算法 (key == nul ...
分类:
编程语言 时间:
2018-01-27 15:16:15
阅读次数:
195
定义: 树: 树(Tree)是n(n≥0)个结点的有限集T,并且当n>0时满足下列条件: (1)有且仅有一个特定的称为根(Root)的结点; (2)当n>1时,其余结点可以划分为m(m>0)个互不相交的有限集T1、T2 、…、Tm,每个集Ti(1≤i≤m)均为树,且称为树T的子树(SubTree)。 ...
分类:
编程语言 时间:
2018-01-23 20:20:11
阅读次数:
162
一、红黑树特性 1.节点只能为红色或者黑色。 2.根节点为黑色。 3.叶节点(NIL)为黑色。 4.红色节点的子节点必须时黑色节点。 5.任意节点到达该节点的子孙节点的路径包含相同数目的黑色节点。 二、红黑树基本操作 三、插入节点 将红黑树作为一棵普通的搜索树进行插入,将插入节点涂为红色。之后有三种 ...
分类:
编程语言 时间:
2018-01-20 21:26:26
阅读次数:
174
平衡二叉树第一次是在大一下学期的数据结构上学的,记得当时自己看书上的算法描述,感觉云里雾里,各种旋转,总有种似懂非懂的样子,无奈当时的数据结构也就是那样似懂非懂地学过去了。时隔两年,转眼就大三下学期了,当我现在再次在《算法导论》上看红黑树遇到这个词的时候,不免感慨当时自己学数据结构时敲的代码实在是太 ...
分类:
其他好文 时间:
2018-01-19 22:23:32
阅读次数:
179
二叉排序树是一种比较有用的折衷方案。 数组的搜索比较方便,可以直接用下标,但删除或者插入某些元素就比较麻烦。 链表与之相反,删除和插入元素很快,但查找很慢。 二叉排序树就既有链表的好处,也有数组的好处。 在处理大批量的动态的数据是比较有用。 二叉树数据结构: 二叉树的创建和遍历:http://blo ...
分类:
编程语言 时间:
2018-01-15 22:29:29
阅读次数:
211
treemap结构是红黑树 1.先介绍一下平衡二叉树 其特点是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。也就是说该二叉树的任何一个子节点,其左右子树的高度都相近。 2.红黑树(Red Black Tree) 是一种自平衡二叉查找树 (1) 检索效率O(l ...
分类:
编程语言 时间:
2018-01-13 23:56:08
阅读次数:
375
一、AVL树性质1.本身首先是一棵二叉搜索树。2.带有平衡条件:每个结点的左右子树的高度之差的绝对值(平衡因子)最多为1。也就是说,AVL树,本质上是带了平衡功能的二叉查找树(二叉排序树,二叉搜索树)。AVL树的查找、插入和删除在平均和最坏情况下都是O(logn)。如果在AVL树中插入或删除节点后,使得高度之差大于1。此时,AVL树的平衡状态就被破坏,它就不再是一棵二叉树;为了让它重新维持在一个平
分类:
其他好文 时间:
2018-01-09 10:22:31
阅读次数:
184