WIKI:https://en.wikipedia.org/wiki/Red%E2%80%93black_tree

转:红黑树(五)之 Java的实现

总结的比较精炼的:

http://www.cnblogs.com/skywang12345/p/3624343.html

摘抄特性:

/**
* 红黑树对象
* @param <T>
* @author zx
* 红黑树(Red-Black Tree,简称R-B Tree),它一种特殊的二叉查找树。
* 红黑树是特殊的二叉查找树,意味着它满足二叉查找树的特征:任意一个节点所包含的键值,大于等于左孩子的键值,小于等于右孩子的键值。
* 除了具备该特性之外,红黑树还包括许多额外的信息。
*
* 红黑树的每个节点上都有存储位表示节点的颜色,颜色是红(Red)或黑(Black)。
* 红黑树的特性:
* (1) 每个节点或者是黑色,或者是红色。
* (2) 根节点是黑色。
* (3) 每个叶子节点是黑色。 [注意:这里叶子节点,是指为空的叶子节点!]
* (4) 如果一个节点是红色的,则它的子节点必须是黑色的。
* (5) 从一个节点到该节点的子孙节点的所有路径上包含相同数目的黑节点。
*
* 关于它的特性,需要注意的是:
* 第一,特性(3)中的叶子节点,是只为空(NIL或null)的节点。
* 第二,特性(5),确保没有一条路径会比其他路径长出俩倍。因而,红黑树是相对是接近平衡的二叉树。
*/
public class RbTree<T extends Comparable<T>> {
/**根结点*/
private RbNode<T> mRoot; private static final boolean RED = false;
private static final boolean BLACK = true; public class RbNode<T extends Comparable<T>> {
/**颜色*/
boolean color;
/**关键字(键值)*/
T key;
/**左孩子*/
RbNode<T> left;
/**右孩子*/
RbNode<T> right;
/**父结点*/
RbNode<T> parent; public RbNode(T key, boolean color, RbNode<T> parent, RbNode<T> left, RbNode<T> right) {
this.key = key;
this.color = color;
this.parent = parent;
this.left = left;
this.right = right;
} } }

细节,下面的 博文是一个系列的,写的很棒:

该系列已经全部更完,有5篇文章:

【算法】红黑树(二叉树)概念与查询(一):https://blog.csdn.net/lsr40/article/details/85230703

【算法】红黑树插入数据(变色,左旋、右旋)(二):https://blog.csdn.net/lsr40/article/details/85245027

【算法】红黑树插入数据的情况与实现(三):https://blog.csdn.net/lsr40/article/details/85266069

【算法】红黑树删除数据(寻找继承人)(四):https://blog.csdn.net/lsr40/article/details/85322371

【算法】红黑树删除数据(最后一步,平衡红黑树)(五):https://blog.csdn.net/lsr40/article/details/86711889
--------------------- 
作者:lsr40 
来源:CSDN 
原文:https://blog.csdn.net/lsr40/article/details/85230703

【数据结构】红黑树-Java实现的更多相关文章

  1. 高级数据结构---红黑树及其插入左旋右旋代码java实现

    前面我们说到的二叉查找树,可以看到根结点是初始化之后就是固定了的,后续插入的数如果都比它大,或者都比它小,那么这个时候它就退化成了链表了,查询的时间复杂度就变成了O(n),而不是理想中O(logn), ...

  2. java数据结构——红黑树(R-B Tree)

    红黑树相比平衡二叉树(AVL)是一种弱平衡树,且具有以下特性: 1.每个节点非红即黑; 2.根节点是黑的; 3.每个叶节点(叶节点即树尾端NULL指针或NULL节点)都是黑的; 4.如图所示,如果一个 ...

  3. Java数据结构——红黑树

    红黑树介绍红黑树(Red-Black Tree),它一种特殊的二叉查找树.执行查找.插入.删除等操作的时间复杂度为O(logn). 红黑树是特殊的二叉查找树,意味着它满足二叉查找树的特征:任意一个节点 ...

  4. 红黑树 Java实现

    概要 前面分别介绍红黑树的理论知识.红黑树的C语言和C++的实现.本章介绍红黑树的Java实现,若读者对红黑树的理论知识不熟悉,建立先学习红黑树的理论知识,再来学习本章.还是那句老话,红黑树的C/C+ ...

  5. 第三十三篇 玩转数据结构——红黑树(Read Black Tree)

    1.. 图解2-3树维持绝对平衡的原理: 2.. 红黑树与2-3树是等价的 3.. 红黑树的特点 简要概括如下: 所有节点非黑即红:根节点为黑:NULL节点为黑:红节点孩子为黑:黑平衡 4.. 实现红 ...

  6. 红黑树java代码实现

    红黑树 思想源于:https://www.cnblogs.com/nananana/p/10434549.html有解释有图,很清晰(删除时需考虑根节点和兄弟节点的子节点是否存在) package t ...

  7. java——红黑树 RBTree

    对于完全随机的数据,普通的二分搜索树就很好用,只是在极端情况下会退化成链表. 对于查询较多的情况,avl树很好用. 红黑树牺牲了平衡性,但是它的统计性能更优(综合增删改查所有的操作). 红黑树java ...

  8. 红黑树及其实例JDK中的TreeMap

    红黑树是一种自平衡二叉查找树(binary search tree,BST),红黑树是一种比较复杂的数据结构,红黑树查找.插入.删除元素的时间复杂度为O(log n),n是树中元素的数目.文章的要讲的 ...

  9. JAVA中的数据结构 - 真正的去理解红黑树

    一, 红黑树所处数据结构的位置: 在JDK源码中, 有treeMap和JDK8的HashMap都用到了红黑树去存储 红黑树可以看成B树的一种: 从二叉树看,红黑树是一颗相对平衡的二叉树 二叉树--&g ...

随机推荐

  1. ADO.net Connection对象简介

    Connection对象 学习的是刘皓的文章  ADO.NET入门教程(四) 品味Connection对象 这篇文章开始水平一般起来了,主要介绍了要优雅的使用这个对象 1 用try...catch.. ...

  2. 【甘道夫】基于Mahout0.9+CDH5.2执行分布式ItemCF推荐算法

    环境: hadoop-2.5.0-cdh5.2.0 mahout-0.9-cdh5.2.0 引言 尽管Mahout已经宣布不再继续基于Mapreduce开发,迁移到Spark.可是实际面临的情况是公司 ...

  3. ASP.NET Core 项目配置 ( Startup ) - ASP.NET Core 基础教程 - 简单教程,简单编程

    原文:ASP.NET Core 项目配置 ( Startup ) - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 项目配置 ( Startup ) 前面几章节 ...

  4. 关于MySql链接url参数的设置 专题

    报错: Establishing SSL connection without server's identity verification is not recommended. According ...

  5. Lizcst Software Lab新秀品牌上线!

    科友微电机是Lizcst Software Lab旗下品牌新秀,专业经营各种微型特种直流电机.微型发电机.微型电机配件.航模车模船模素材.教学科学小制作材料的网店.本店秉承Lizcst Softwar ...

  6. style的继承

    第一种方式:瞄准控件的基类 如下例所示,继承ContentControl的控件,都可以使用这个Style <Window.Resources> <Style x:Key=" ...

  7. 【msdn wpf forum翻译】TextBlock等类型的默认样式(implicit style)为何有时不起作用?

    原文:[msdn wpf forum翻译]TextBlock等类型的默认样式(implicit style)为何有时不起作用? 原文链接:http://social.msdn.microsoft.co ...

  8. 图像滤镜艺术---(Lightleaks Filter)漏光滤镜

    原文:图像滤镜艺术---(Lightleaks Filter)漏光滤镜 (Lightleaks Filter)漏光滤镜 漏光拍摄其实就是一种摄影手法,最初是因为强烈光照导致相片交卷的过分曝光,最终在成 ...

  9. 使用NAudio实现Wav转Mp3

    转换成MP3: using Microsoft.Win32; using NAudio.MediaFoundation; using NAudio.Wave; using System.Windows ...

  10. 微信小程序把玩(四十)animation API

    原文:微信小程序把玩(四十)animation API 动画水还是比较深的,这里只是简单介绍下小程序中动画的一些属性和注意事项,做动画前一定要整理好思路将动画一步步分解,再进行组合!这里只做引入. w ...