红黑树是一种自动平衡的二叉查找树,因为存在红黑规则,所以有效的防止了二叉树退化成了链表,且查找和删除的速度都很快,时间复杂度为log(n)。

  什么是红黑规则?

  1.根节点必须是黑色的。

  2.节点颜色要么是红要么是黑。

  3.树的每一个分叉存在相同黑色节点。

  4.不允许存在两个连续的红色节点。

  为不断适应红黑规则,在写程序中如何调整?

  1.旋转

    ---单旋转

      外侧节点单旋转。外侧节点指的是左子树的左孩子节点,右子树的右孩子节点。

    ---双旋转

      内侧节点双旋转。内侧节点指的是左子树的右孩子节点,右子树的左孩子节点。

  2.变色

    ---节点颜色进行更改。

    ---强制将根节点颜色变为黑色。

  博文参考链接:http://www.cnblogs.com/skywang12345/p/3245399.html  (红+黑节点指的是父节点红色,当前节点黑色。黑+黑是父节点黑色,当前节点黑色。前面的颜色可看做是通过继承来的)。

转载于:https://www.cnblogs.com/ranter/p/9249929.html

数据结构Java版之红黑树(八)相关推荐

  1. 重温数据结构:深入理解红黑树

    读完本文你将了解到: 什么是红黑树 黑色高度 红黑树的 5 个特性 红黑树的左旋右旋 指定节点 x 的左旋 右图转成左图 指定节点 y 的右旋左图转成右图 红黑树的平衡插入 二叉查找树的插入 插入后调 ...

  2. Android简易音乐重构MVVM Java版 -搭建项目(八)

    Android简易音乐重构MVVM Java版 -搭建项目(八) 关于 新版本配置 网易云音乐api版本更新 重构代码 新建app类继承Application 项目结构 定义BaseActivity. ...

  3. Java数据结构与算法:红黑树

    概要 概述:R-B Tree,又称为"红黑树".本文参考了<算法导论>中红黑树相关知识,加之自己的理解,然后以图文的形式对红黑树进行说明.本文的主要内容包括:红黑树的特 ...

  4. 【数据结构与算法】红黑树的Java实现

    RedBlackTree原理分析 红黑树原理分析 RedBlackTree功能介绍 void insert(x) → Insert x void remove(x) → Remove x (unimp ...

  5. 《数据结构与算法之红黑树(Java实现)》

    说在前头:本人为大二在读学生,书写文章的目的是为了对自己掌握的知识和技术进行一定的记录,同时乐于与大家一起分享,因本人资历尚浅,发布的文章难免存在一些错漏之处,还请阅读此文章的大牛们见谅与斧正.若在阅 ...

  6. 红黑树+java+删除_红黑树深入剖析及Java实现

    红黑树是平衡二叉查找树的一种.为了深入理解红黑树,我们需要从二叉查找树开始讲起. BST 二叉查找树(Binary Search Tree,简称BST)是一棵二叉树,它的左子节点的值比父节点的值要小, ...

  7. 数据结构和算法分析: 红黑树

    1. 前言 红黑树是二叉搜索树的一种, 为什么要设计红黑树呢?主要原因是二叉搜索树上面的操作,比如search.insert.delete的一些操作的,其时间复杂度为O(h).主要和树的深度有关.因此 ...

  8. 数据结构算法学习 之 红黑树

    1.红黑树的特性 (1)每个节点或者是黑色,或者是红色. (2)根节点是黑色. (3)每个叶子节点(NIL)是黑色. [注意:这里叶子节点,是指为空(NIL或NULL)的叶子节点!] (4)如果一个节 ...

  9. 数据结构学习——RBT(红黑树)以及实现Map和Set

    我们知道,二叉搜索树是个很好的数据结构,可以快速地找到一个给定关键字的数据项,并且可以快速地插入和删除数据项.但是二叉搜索树有个很麻烦的问题,如果树中插入的是随机数据,则执行效果很好,但如果插入的是有 ...

最新文章

  1. Python 多线程总结(1)- thread 模块
  2. 配置库用户_手把手教新手安装Anaconda配置开发环境
  3. 发个上海英雄会聚会沙龙的公告 希望和大家一起见面交流探讨
  4. 八、爬虫解析利器 PyQuery 的使用
  5. QT的QHashIterator类的使用
  6. 戴尔电脑好还是华为好_华硕和戴尔笔记本哪种好 华硕和戴尔优缺点分析【详解】...
  7. 2059 - authentication plugin 'caching_sha2_password' -navicat连接异常问题解决
  8. Redis集群之官方集群
  9. 数据:PayPal 24小时内加密交易量达2.42亿美元创记录
  10. 从三级界面直接跳回一级调用方法
  11. windows下linux下socket编程区别
  12. 现代科学家运用电极计算机,纳米技术在现代生活中的应用
  13. ORACLE有EXCEL中trend函数,EXCEL【TREND】函数,你知道如何使用吗?
  14. java供应链项目详解_基于jsp的企业供应链管理系统-JavaEE实现企业供应链管理系统 - java项目源码...
  15. 计算机通信答辩ppt,电子设计大赛答辩.ppt
  16. 浏览器播放视频时蓝牙耳机自动关机
  17. java xml 小于等于_MyBatis中xml文件中的大于 大于等于 小于 小于等于 写法
  18. html给标题设置背景,怎么在html中设置一级标题背景
  19. 金融借贷平台大数据风控解决方案
  20. PHP+MySQL实现学生信息管理系统登录功能(附带源码)

热门文章

  1. WCF实现RESTFul Web Service
  2. 搭建PHP环境遇到的问题!!
  3. Emacs 使用YASnippet
  4. Cassandra 可视化工具
  5. CCNA CCNP CCIE所有实验名称完整版
  6. 一篇文章让你了解区块链技术的发展阶段
  7. Hadoop集群搭建(八:Hive的安装配置)
  8. 根据给定数据创建JSON并验证
  9. 参加Python培训后能干嘛
  10. 学习web前端难不难