重写hashCode和equals (1)向Map集合中存,以及从Map集合中取,都是先调用key的hashCode方法,然后调用equals方法! equals方法有可能调用,也有可能不调用 往里面存的时候会先调用Hashcode方法,得到Hash值 拿put(k,v)举例,什么时候equals不 ...
分类:
其他好文 时间:
2021-06-02 18:58:20
阅读次数:
0
读rbtree 定义在rbtree.c文件 rb_insert_color:插入一个节点 rb_prev:返回当前节点之前的节点e rb_next:返回当前节点之后的节点 rb_erase:删除一个节点 内存管理,io调度算法等等使用了红黑树! 红黑树实质是自平衡二叉树。 两个完全公平调度策略,一个 ...
分类:
其他好文 时间:
2020-05-27 00:52:35
阅读次数:
91
1、基本概念 所谓自平衡二叉树,就是当我们插入或删除元素之后,二叉树的高度会自动调整到最小,这样我们就可以在对数时间内查找二叉树内的元素。 2、定义 TreeSet<Elemtype> set=TreeSet<>(); 3、基本函数 set.ceiling(x) // 取set中大于等于x的最小值, ...
分类:
编程语言 时间:
2020-02-14 22:53:08
阅读次数:
116
关键字:修复双黑、插入修复、变色、旋转、nill、红黑 前言: 新添加的节点默认是红色的。 nil节点默认是黑色的。 自平衡方式--旋转 1、定义:节点是黑色或者红色,且满足以下五条性质的自平衡二叉树 性质: (1)性质1:节点是红色或黑色 (2)性质2:根节点是黑色的; (3)性质3:叶子节点是黑 ...
分类:
其他好文 时间:
2019-08-23 22:06:56
阅读次数:
104
详细的具体步骤 : "一篇讲的很好博客" "AVL,红黑树优先博客 Never" cpp的完整实现 AVL.c文件中也有图 旋转步骤 附上完整实现的CPP代码 头文件 函数文件 ...
分类:
其他好文 时间:
2019-04-01 11:40:14
阅读次数:
113
1.二叉树 特点:二叉树每个节点最多只有两个子节点, 分为左右子树, 且左子树 < 节点 < 右子树。 时间复杂度: O(logn), 存在中序、前序、后序遍历。 2.AVL树 特点:自平衡二叉树, 通过旋转来平衡二叉树的高度, 适用于查找多操作少的条件。 时间复杂度: 找、插入和删除在平均和最坏情 ...
分类:
其他好文 时间:
2018-08-04 19:05:11
阅读次数:
141
1. 概述 AVL树是最早提出的自平衡二叉树,在AVL树中任何节点的两个子树的高度最大差别为一,所以它也被称为高度平衡树。AVL树得名于它的发明者G.M. Adelson-Velsky和E.M. Landis。AVL树种查找、插入和删除在平均和最坏情况下都是O(log n),增加和删除可能需要通过一 ...
分类:
其他好文 时间:
2017-06-13 16:49:11
阅读次数:
192
执行插入操作可能出现不平衡的情况,当平衡二叉树。AVL这树是一种自平衡二叉树,使二叉树又一次保持平衡。而且查找、插入和删除操作在平均和最坏情况下时间复杂度都是O(log n) AVL树的旋转一共同拥有四种情形。注意全部旋转情况都是环绕着使得二叉树不平衡的第一个节点展开的。1. LL型 平衡二叉树某....
分类:
其他好文 时间:
2015-10-04 20:52:35
阅读次数:
209
红黑树目的在进行插入和删除操作时通过特定操作保持二叉查找树的平衡,从而获得较高的查找性能。效率查找,插入和 删除 时间复杂度:O(log n) ,n 是树中元素数目。性质
节点是红色或黑色。
根节点是黑色。
每个叶节点(NIL节点,空节点)是黑色的。
每个红色节点的两个子节点都是黑色。(从每个叶子到根的所有路径上不能有两个连续的红色节点)
从任一节点到其每个叶子的所有路径都包含相同数目的黑色节点。...
分类:
其他好文 时间:
2015-07-30 21:33:43
阅读次数:
110