在知乎老师的帮助下,刚刚开始学习红黑树,个人的总结记录下

对于TreeMap.class添加方法的了解:

先贴代码(TreeMap.class添加调整方法):

这个是添加代码里面最后调用的方法,用于调整红黑树,之前的操作请百度平衡二叉树进行学习,这里只说调整方法

一共分为4种情况(实际来说3种,这里为了方便记录):

当新增节点父级节点是祖父级节点的左儿子时:

  第一种情况:

  第二种情况:

当新增节点父级节点是祖父级节点的右儿子时:

 第一种情况:

  第二种情况:

红黑树的添加调整方法,就先记录到这里

对了,别忘了最后把根节点设置成黑色

root.color = BLACK;//设置根节点为黑色

自己的总结:

  三种情况(当前节点的父节点为红色):

     1.当叔叔节点为红色:把父节点和叔叔节点设置成黑色,祖父设置成红色,把当前节点的引用指向祖父节点,继续循环判断

     2.当叔叔节点为黑色:如果当前节点是父节点的右孩子,对父节点进行左转,然后当前节点引用指向父节点,然后把父节点设置成黑色,祖父节点设置成红色,对祖父节点进行右转

     3.当叔叔节点为黑色:如果当前节点是父节点的左孩子,对父节点进行右转,然后当前节点引用指向父节点,然后把父节点设置成黑色,祖父节点设置成红色,对祖父节点进行右转

转载于:https://www.cnblogs.com/jianguang/p/6972370.html

学习红黑树过程中的个人总结相关推荐

  1. 算法学习----红黑树

    算法学习----红黑树 红黑树的介绍 先来看下算法导论对R-BTree的介绍: 红黑树,一种二叉查找树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或Black. 通过对任何一条从根到叶子 ...

  2. 拒绝枯燥,用生动的例子带你学习红黑树

    /   今日科技快讯   / 2019胡润百富榜于今日(10月10日)揭晓,今年百富榜前十位的上榜门槛比去年上升100亿元,达到1200亿元.马云家族以2750亿元财富位列第一,第三次成为中国首富:马 ...

  3. 如何学习Java? 在学习Java的过程中需要掌握哪些技能?

    作为刚刚进入Java领域的新同学,无论是高校的毕业大学生,还是有志转行的在职人员,都面临着诸多如下的困惑:如何学习Java? 在学习Java的过程中需要掌握哪些技能?Java学习过程中有哪些注意事项? ...

  4. 在学习python的过程中,遇到的最大的困难是什么?

    本人文科生,回顾自己近 2 年的Python 自学经历,有一些学习心得和避坑经验分享给大家,让大家在学习 Python 的过程中少走一些弯路!减少遇到不必要的学习困难! 首先,最开始最大的困难应该就是 ...

  5. java红黑树_JAVA学习-红黑树详解

    1.定义 红黑树是特殊的二叉查找树,又名R-B树(RED-BLACK-TREE),由于红黑树是特殊的二叉查找树,即红黑树具有了二叉查找树的特性,而且红黑树还具有以下特性: 1.每个节点要么是黑色要么是 ...

  6. scheme 学习:红黑树

    这几天继续学习scheme,scheme中虽然有hashtable但没有类似C++中的map,于是把C版本中的红黑树移植到scheme(中间也发现了C版本中的一些问题,暂时懒得调整了^()^) 以作为 ...

  7. 学习python/pytorch过程中遇到的知识点

    Pytorch torch.backends.cudnn.deterministic 和 torch.backends.cudnn.benchmark 这两个参数,用于固定算法,使每次运行结果都一样. ...

  8. 【入门PLC】01、博途TIA Portal 软件的使用学习以及安装过程中出错的问题解决(超有用)

    目录 一.前言 1.推荐安装教学 2.win CC安装问题 二.学习视频 三.学习笔记 (一).认识博途 1.1.创建项目 1.2.编写程序 (二).基础知识介绍 2.1.基本指令 2.2.操作数标识 ...

  9. 算法基础知识科普:8大搜索算法之红黑树(中)

    红黑树也是一种特殊形式的二叉搜索树,通过结点的颜色以及三条规则来保证二叉搜索树的平衡.规则1:根结点的颜色是黑色,规则2:叶子结点到根结点路径上遇到的黑色结点数目相同,规则3:叶子结点到根结点路径上无 ...

最新文章

  1. type python_typepython
  2. golan web扫雷
  3. socket穿透代理代码(C++版)
  4. 类的扩充 js中面向对象的技术
  5. 外媒:伊朗政府封锁加密通讯应用Signal
  6. 三星性能测试软件,三星R25的性能测试
  7. 关于MJ刷新的报Too many arguments to function call, expected 0, have *问题
  8. codeforces920 C. Swap Adjacent Elements【连通块 + 前缀和】
  9. erlang游戏服务器
  10. bzoj3265 志愿者招募加强版
  11. 初识EMC元器件(五)——电容参数解读及选型应用
  12. 拯救阿波罗14号!那些伟大太空计划背后的计算机工程师们
  13. ACM组合数学题目列表
  14. Java数组可变长参数详解
  15. 微信公众号开发系列-网页授权获取用户基本信息
  16. 苏州OJ c001: 合并同类项
  17. 共享单车维护任务完成概率防策略机制设计
  18. 编译原理陈火旺版第四章课后题答案
  19. 【C语言学习疑难杂症】Stack arround the variable was corrupted问题
  20. [Kindle]如何用邮箱发送文件至Kindle设备?

热门文章

  1. android 4.0.3开机时不能收到广播
  2. 北京治堵新方案出台了!
  3. 3389远程连接问题的一个解决办法
  4. mysql中如何查询最近24小时、top n查询
  5. [Java] 蓝桥杯ALGO-78 算法训练 确定元音字母位置
  6. PAT 乙级 1037. 在霍格沃茨找零钱(20)Java版
  7. 1006. 换个格式输出整数 (15)-PAT乙级真题
  8. 查看AIX系统cpu、内存、网卡、硬盘、HBA卡信息命令
  9. 网络函数bind源码分析
  10. 计算机基础教程2 - 计算机发展历程