前言 11.1新的一月加油!这个购物狂欢的季节,一看,已囊中羞涩!赶紧来恶补一下红黑树和2-3树吧!红黑树真的算是大名鼎鼎了吧?即使你不了解它,但一定听过吧?下面跟随我来揭开神秘的面纱吧! 一.2-3树 1.抢了红黑树的光环? 今天的主角是红黑树,是无疑的,主角光环在呢!那2-3树又是什么鬼呢?学习2-3树不仅对理解红黑树有帮助,对理解B类树,也是有巨大帮助的,所以学习2-3树很必要! 2.基本性质 2-3树满足二分搜索树的基本性质,但节点可以存放一个元素或两个元素!如下图,就是2-3树: 说明…
TreeMap的实现是红黑树算法的实现,所以要了解TreeMap就必须对红黑树有一定的了解,其实这篇博文的名字叫做:根据红黑树的算法来分析TreeMap的实现,但是为了与Java提高篇系列博文保持一致还是叫做TreeMap比较好.通过这篇博文你可以获得如下知识点: 1.红黑树的基本概念. 2.红黑树增加节点.删除节点的实现过程. 3.红黑树左旋转.右旋转的复杂过程. 4.Java 中TreeMap是如何通过put.deleteEntry两个来实现红黑树增加.删除节点的. 我想通过这篇博文你对Tr…
首先讲解一下AVL树: 例如,我们要输入这样一串数字,10,9,8,7,15,20这样一串数字来建立AVL树 1,首先输入10,得到一个根结点10 2,然后输入9, 得到10这个根结点一个左孩子结点9 3,再输入8,这个时候8,9,10就在一条线上了,这时候就需要旋转,让9成为根结点 然后就这样一直输入,遇到不能满足AVL条件的时候就旋转. 发现了没有,AVL树为了满足绝对的平衡,在中途会有很多次这样的旋转. 然而红黑树的它的条件是那5条性质,这5条性质没有要求绝对平衡,这样同样的数据建立红黑树…
红黑树又称红-黑二叉树,它首先是一颗二叉树,它具体二叉树所有的特性.同时红黑树更是一颗自平衡的排序二叉树.我们知道一颗基本的二叉树他们都需要满足一个基本性质–即树中的任何节点的值大于它的左子节点,且小于它的右子节点.按照这个基本性质使得树的检索效率大大提高.我们知道在生成二叉树的过程是非常容易失衡的,最坏的情况就是一边倒(只有右/左子树),这样势必会导致二叉树的检索效率大大降低(O(n)),所以为了维持二叉树的平衡,大牛们提出了各种实现的算法,如:AVL,SBT,伸展树,TREAP ,红黑树等等…
Atitit 常见的树形结构 红黑树  二叉树   B树 B+树  Trie树 attilax理解与总结 1.1. 树形结构-- 一对多的关系1 1.2. 树的相关术语: 1 1.3. 常见的树形结构 红黑树  二叉树   B树 B+树  Trie树2 1.4. 满二叉树和完全二叉树..完全二叉树说明深度达到完全了.2 1.5. 属的逻辑表示 树形比奥死,括号表示,文氏图,凹镜法表示3 1.6. 二叉树是数据结构中一种重要的数据结构,也是树表家族最为基础的结构.3 1.6.1. 3.2 平衡二叉…
本文转载自http://www.ibm.com/developerworks/cn/java/j-lo-tree/ 目录: TreeSet 和 TreeMap 的关系 TreeMap 的添加节点 TreeMap 的删除节点 红黑树 添加节点后的修复 删除节点后的修复 检索节点 TreeMap 和 TreeSet 是 Java Collection Framework 的两个重要成员,其中 TreeMap 是 Map 接口的常用实现类,而 TreeSet 是 Set 接口的常用实现类.虽然 Has…
红黑树一直是数据结构中的难点,大部分关于算法与数据结构的学习资料(包括<算法导论>)对于这部分的讲解都是上来就下定义,告诉我们红黑树这个性质那个性质,插入删除要注意1234点,但是基本没有讲为什么这样定义红色和黑色,让人理解起来十分费力.直到我看了下图这本书中关于红黑树部分的讲解,一时间豁然开朗,上网查了下这本书的作者Sedgewick,他是伟大的高德纳的学生!红黑树的发明者! 他在这本书中告诉了我们红黑树的根本模型:以二叉树的形式实现2-3树,通过红黑树与2-3树之间的一一对应,让我们对红黑…
概要 红黑树在日常的使用中比较常用,例如Java的TreeMap和TreeSet,C++的STL,以及Linux内核中都有用到.之前写过一篇文章专门介绍红黑树的理论知识,本文将给出红黑数的C语言的实现代码,后序章节再分别给出C++和Java版本的实现.还是那句话,三种实现原理相同,择其一了解即可:若文章有错误或不足的地方,望不吝指出! 目录1. 红黑树的介绍2. 红黑树的C实现(代码说明)3. 红黑树的C实现(完整源码)4. 红黑树的C测试程序 转载请注明出处:http://www.cnblog…
概要 前面分别介绍红黑树的理论知识和红黑树的C语言实现.本章是红黑树的C++实现,若读者对红黑树的理论知识不熟悉,建立先学习红黑树的理论知识,再来学习本章. 目录1. 红黑树的介绍2. 红黑树的C++实现(代码说明)3. 红黑树的C++实现(完整源码)4. 红黑树的C++测试程序 转载请注明出处:http://www.cnblogs.com/skywang12345/p/3624291.html 更多内容:数据结构与算法系列 目录 (01) 红黑树(一)之 原理和算法详细介绍(02) 红黑树(二…
概要 前面分别介绍红黑树的理论知识.红黑树的C语言和C++的实现.本章介绍红黑树的Java实现,若读者对红黑树的理论知识不熟悉,建立先学习红黑树的理论知识,再来学习本章.还是那句老话,红黑树的C/C++/Java实现,原理一样,择其一了解即可. 目录1. 红黑树的介绍2. 红黑树的Java实现(代码说明)3. 红黑树的Java实现(完整源码)4. 红黑树的Java测试程序 转载请注明出处: 更多内容:数据结构与算法系列 目录 (01) 红黑树(一)之 原理和算法详细介绍(02) 红黑树(二)之…