Java中的TreeMap及红黑树

TreeMap:

http://blog.csdn.net/tobeandnottobe/article/details/7232664

红黑树:

http://blog.chinaunix.net/uid-26575352-id-3061918.html

其实红黑树最重要的是:

性质1. 节点是红色或黑色。

性质2. 根是黑色。

性质3. 所有叶子都是黑色(叶子是NIL节点)。

性质4. 每个红色节点必须有两个黑色的子节点。(从每个叶子到根的所有路径上不能有两个连续的红色节点。)

性质5. 从任一节点到其每个叶子的所有简单路径都包含相同数目的黑色节点。

想要了解红黑树的相关知识,可以看看wiki的百科:

https://zh.wikipedia.org/zh/%E7%BA%A2%E9%BB%91%E6%A0%91

时间: 2025-01-02 15:24:09

Java中的TreeMap及红黑树的相关文章

Java集合详解6:TreeMap和红黑树

Java集合详解6:TreeMap和红黑树 初识TreeMap 之前的文章讲解了两种Map,分别是HashMap与LinkedHashMap,它们保证了以O(1)的时间复杂度进行增.删.改.查,从存储角度考虑,这两种数据结构是非常优秀的.另外,LinkedHashMap还额外地保证了Map的遍历顺序可以与put顺序一致,解决了HashMap本身无序的问题. 尽管如此,HashMap与LinkedHashMap还是有自己的局限性----它们不具备统计性能,或者说它们的统计性能时间复杂度并不是很好才

python中实现将普通字典dict转换为java中的treeMap

上代码: from heapq import heappush,heappop from collections import OrderedDict def toTreeMap(paramMap): "将paramMap转换为java中的treeMap形式.将map的keys变为heapq.创建有序字典." keys=paramMap.keys() heap=[] for item in keys: heappush(heap,item) sort=[] while heap: so

Java - HashTree源码解析 + 红黑树

Java提高篇(二七)-----TreeMap TreeMap的实现是红黑树算法的实现,所以要了解TreeMap就必须对红黑树有一定的了解,其实这篇博文的名字叫做:根据红黑树的算法来分析TreeMap的实现,但是为了与Java提高篇系列博文保持一致还是叫做TreeMap比较好.通过这篇博文你可以获得如下知识点: 1.红黑树的基本概念. 2.红黑树增加节点.删除节点的实现过程. 3.红黑树左旋转.右旋转的复杂过程. 4.Java 中TreeMap是如何通过put.deleteEntry两个来实现红

java中的TreeMap和HashMap的区别和联系:

1.什么是map? 在数据结构中,map是由一组键值对(key,value)来保存数据的一种数据结构模型. 2.集合一般提供两种常规的Map实现,一种是HashMap,另一种是TreeMap,下面将具体分析这两种map的实现: HashMap:基于哈希表实现.使用HashMap要求添加的键类明确定义了hashCode()和equals()[可以重写hashCode()和equals()],为了优化HashMap空间的使用,您可以调优初始容量和负载因子. (1)HashMap(): 构建一个空的哈

HashMap中的TreeNode,红黑树源码分析

在看HashMap的源码时候看到了TreeNode.因此需要对其进行一个了解.是一个红黑树.可以百度一下红黑树的数据结构.分析了下源码,还是比较枯燥的 红黑树的性质:本身是一个二叉查找树(所有左节点的值都比右节点的小).另: 节点是红色或者黑色 根节点是黑色 每个叶节点(Nil节点,空节点)是黑色的 每个红节点对应的两个子节点都是黑色的(不可能有两个相连的红节点). 从任意节点出发,到每个叶子节点都有相同的黑色节点. 这保证了红黑数是平衡的,从根到叶子的最长的可能路径不多于最短的可能路径的两倍长

Java数据结构和算法(八)--红黑树与2-3树

红黑树规则: 1.根节点与叶节点都是黑色节点 2.每个红色节点的两个子节点都是黑色节点,反之,不做要求,换句话说就是不能有连续两个红色节点 3.从根节点到所有叶子节点上的黑色节点数量是相同的 一般对红黑树的讲述都是先给出这样的定义,这样想对不太容易理解的,而在算法4一书中,直接跳过这些规则,而讲述了红黑树与2-3树的等价性 如果我们先了解2-3树,理解了红黑树与2-3树之间的关系,回过头就会发现红黑树不难 2-3树: 2-3树满足二分搜索树的基本性质,但是不是二叉树 2-3树节点可以存放一个元素

C++ STL中的map用红黑树实现,搜索效率是O(lgN),为什么不像python一样用散列表从而获得常数级搜索效率呢?

C++ STL中的标准规定: map, 有序 unordered_map,无序,这个就是用散列表实现 谈谈hashmap和map的区别,我们知道hashmap是平均O(1),map是平均O(lnN)的,实践上是不是hashmap一定优于map呢?这里面有几个因素要考虑: hashmap的内存效率比map差,这是显而易见的 map的查找效率实践上是非常高的,如在1M数据中查找一个元素,需要多少次比较呢?20次. map的查找效率比hashmap稳定. hashmap查找时候要算hash,这个最坏时

java学习笔记——Java中HashMap和TreeMap的区别深入理解

本文转载自Java中HashMap和TreeMap的区别深入理解 首先介绍一下什么是Map.在数组中我们是通过数组下标来对其内容索引的,而在Map中我们通过对象来对对象进行索引,用来索引的对象叫做key,其对应的对象叫做value.这就是我们平时说的键值对. HashMap通过hashcode对其内容进行快速查找,而 TreeMap中所有的元素都保持着某种固定的顺序,如果你需要得到一个有序的结果你就应该使用TreeMap(HashMap中元素的排列顺序是不固定的). HashMap 非线程安全 

TreeMap的实现--红黑树

http://cmsblogs.com/?p=1013  原文出处. TreeMap的实现是红黑树算法的实现,所以要了解TreeMap就必须对红黑树有一定的了解,其实这篇博文的名字叫做:根据红黑树的算法来分析TreeMap的实现,但是为了与Java提高篇系列博文保持一致还是叫做TreeMap比较好.通过这篇博文你可以获得如下知识点: 1.红黑树的基本概念. 2.红黑树增加节点.删除节点的实现过程. 3.红黑树左旋转.右旋转的复杂过程. 4.Java 中TreeMap是如何通过put.delete