首页 > 其他分享 >红黑树阅读

红黑树阅读

时间:2024-05-16 15:12:36浏览次数:19  
标签:黑树 实现 算法 阅读 红黑树 树中 节点

关于红黑树

其实之前看算法的红宝书就有些印象,红黑树是2-3-4树
介绍一篇在知乎上的文章 什么是红黑树

做开发的朋友一定知道接口这个东西:定义接口,给出实现。一个接口可以有多种不同的实现,但是这些实现都会满足接口中的声明。
例如,我们定义手机是一个可用作通讯的工具,作为它的实现,三星,苹果,华为推出了各式各样的产品。
红黑树的本质其实也是对概念模型:2-3-4树的一种实现,因此我们先来关注2-3-4树

这里讲的还是很容易理解和明白的,不管是什么算法、数据结构,首先会有一个模型或者说是概念,在理论上是可能的。能够达到我们对这种算法的要求,时间、性能、复杂度等等,然后会根据这个模型去设计或者说实现我们的算法,

2-3-4树中的2节点对应着红黑树中的黑色节点,而2-3-4树中的非2节点是以红节点+黑节点的方式存在,红节点的意义是与黑色父节点结合,表达着2-3-4树中的3,4节点。

这里可以看到一个2-3节点的红黑方式的展示

alt text

最后关于4节点的介绍,感觉用到的很少

alt text

算法4中关于不同算法的讲解还基本是从概念出发的

算法4中给出的红黑树是基于2-3树实现,而且这种实现的红黑树十分特殊,它要求概念模型中的3节点在红黑树中必须用左倾的红色节点来表示。这种限定能够很大的减少红黑树调整过程中的复杂性,我们将在接下来的内容中体会到这一点。

其实当时看算法4的时候带的功利性太强,看的时候就是看怎么能够快速理解这些算法,或者说能够手撕这些算法,用在面试的时候。
俗话说得好,磨刀不误砍柴工。当你希望能够掌握一个复杂度高的技能的时候,往往需要能够先理解背后的基本原理,基本的概念,来龙去脉。等真正理解算法、掌握算法之后,再去实现就会事半功倍。
这也是我现在工作中所理解到的,之前总是会很着急先上手,期望通过直接手撕代码,快速掌握。后面出了问题,就很容易陷入迷茫,不知所措。
但如果你一开始就能够

标签:黑树,实现,算法,阅读,红黑树,树中,节点
From: https://www.cnblogs.com/keeper-mwg-99/p/18195975

相关文章

  • RocSE论文阅读笔记
    TowardsRobustNeuralGraphCollaborativeFilteringviaStructureDenoisingandEmbeddingPerturbation论文阅读笔记Abstract​ 现有的鲁棒协同滤波工作主要通过去噪图结构来提高鲁棒性,而其他领域的最新进展表明,在嵌入空间中直接添加对抗性扰动可以显著提高模型的鲁棒性。......
  • RecDCL论文阅读笔记
    RecDCL:DualContrastiveLearningforRecommendation论文阅读笔记Abstract提出问题:​ 现有的基于cl的方法大多集中于批处理的对比,没有利用特征维度中潜在的规律性。这导致了在用户和项目的表示学习过程中的冗余解决方案。解决方法:​ 在这项工作中,我们研究了如何同时使用批......
  • 论文阅读:融合外部知识的生成式实体关系联合抽取方法
    祝振赫,武虹,高洁,等.融合外部知识的生成式实体关系联合抽取方法[J].计算机技术与发展,2023,33(08):124-130.引言基于传统的机器学习的关系抽取方法主要通过领域专家制定实体关系范式,通过统计和规则等方式进行抽取。许多经典的关系抽取方法都是使用监督学习来获得较好的性能表......
  • 数据结构:红黑树
    满足五条性质:1.根节点一定是黑色2.叶节点一定是黑色空心3.节点非黑即红4.红色节点孩子节点一定是黑色的即不会出现连续的红色节点5.任意一个节点到叶节点路径上黑色节点数量一样多 右旋操作:1.该节点和左孩子断开连接2.左孩子替代......
  • UcOs-III 源码阅读: os_time.c
    对实时时钟源文件os_time.c进行源码阅读与注释://功能:Tick级别延时、时间延时、恢复延时中的任务、获取/设置系统Tick值、实时时钟滴答函数//Tick级别延时API:OSTimeDly(ticks)//时间延时API:OSTimeDlyHMSM(p_hmsm)//恢复延时API:OSTimeDlyResume(task_id)//获取系统T......
  • 告别繁琐阅读,阿里通义智文阅读助手带您轻松畅游知识海洋!
    哈喽,大家好,我是木头左,致力于程序服务生活!一、阿里通义智文阅读助手简介阿里通义智文阅读助手是一款基于人工智能技术的阅读辅助工具,可以帮助用户更高效地阅读和理解各种类型的文档,如PPT、图片和PDF等。通过深度学习技术,助手能够识别文档中的关键信息,为用户提供智能摘要、关键......
  • 阅读笔记4
    构建之法2:两人合作、团队和流程代码风格的原则:简洁,易读,无二义性代码复审的目的不只在于指出代码的错误,还在于发现逻辑错误、算法错误、潜在的错误和回归性错误——当前的修改导致以前修复的缺陷又重新出现、可能需要改进的地方,还可以互相传授经验、让更多的成员熟悉项目各部分......
  • 阅读笔记3
    构建之法1:《构建之法》第一章介绍了软件工程的概念、理论、知识点和软件工程和计算机科学的关系。具体来说是让我认识到了以下几个概念:源代码管理,配置管理,质量保证,软件测试,需求分析。程序理解,软件维护,服务运营,合称为软件的生命周期。另外读到"将软件与程序分隔开来的就是用户......
  • UcOs-III 源码阅读: os_tmr.c
    对定时器源文件os_tmr.c进行源码阅读与注释://功能:创建、删除、启动、停止、删除、初始化模块、获取定时器剩余时间、获取定时器状态、//创建定时器API:OS_TmrCreate//删除定时器API:OS_TmrDel//启动定时器API:O......
  • JDK源码阅读-------自学笔记(二十六)(java.util.Map 自定义讲解)
    一、简介Map就是用来存储“键(key)-值(value)”对的.通过键寻找value,所以键不能重复.数组的本质也是一种键值对,区别就是索引一般是数字,而Map的Key可以是任意对象(字符串,数字),相当于把数组的索引范围扩的更大,使用更方便.实际开发中较为常用.二、Map的常用方法实例(1......