数据结构--红黑树 Red Black Tree

文章目录

    • 1.概念
    • 2.操作
      • 2.1 左旋、右旋(围绕某个节点的左/右旋)
      • 2.2 插入
      • 2.3 删除
    • 3. 代码

1.概念

  • 二叉树在频繁动态增删后,可能退化成链表,时间复杂度由 O(lgn) 变成 O(n)。(不平衡)
  • 平衡二叉树,树中任意一个节点的左右子树的高度相差 <= 1。完全二叉树、满二又树其实都是平衡二叉树,但是非完全二叉树也有可能是平衡二叉树。
    在这里插入图片描述
  • 平衡二叉查找树中“平衡”的意思,就是让整棵树左右看起来比较“对称"、比较“平衡”,不要出现左子树很高、右子树很矮的情况。这样就能让整棵树的高度相对来说低一些,相应的插入、删除、查找等操作的效率高一些。
  • 红黑树,R-B Tree,是一种不严格的平衡二叉查找树,树种节点,一类标记为黑色,一类标记为红色。还需满足以下条件:
    1. 节点
    2. 每个叶子节点都是黑色的空节点(NIL),也就是说,叶子节点不存储数据
    3. 任何相邻的节点都不能同时为红色,也就是说,红色节点是被黑色节点隔开的
    4. 每个节点,从该节点到达其可达叶子节点的所有路径,都包含相同数目的黑色节点
      在这里插入图片描述
  • 红黑树用的更多,AVL树是一种高度平衡的二叉树,查找的效率非常高,但是,有利就有弊,AVL树为了维持这种高度的平衡,就要付出更多的代价。每次插入、删除都要做调整,就比较复杂、耗时。所以,对于有频繁的插入、删除操作的数据集合,使用AVL树的代价就有点高
    红黑树只是做到了近似平衡,并不是严格的平衡,所以在维护平衡的成本上,要比AVL树要低。所以,红黑树的插入、删除、查找各种操作性能都比较稳定。对于工程应用来说,要面对各种异常情况,为了支撑这种工业级的应用,我们更倾向于这种性能稳定的平衡二叉查找树。

2.操作

2.1 左旋、右旋(围绕某个节点的左/右旋)

看之前,可以先阅读下红黑树的历史由来
在这里插入图片描述

2.2 插入

  • 红黑树规定,插入节点必须为红,而且,二叉查找树中新插入的节点都是放在叶子节点上。
  1. 如果插入节点的父节点是黑色的,那我们什么都不用做,它仍然满足红黑树的定义。
  2. 如果插入的节点是根节点,那我们直接改变它的颜色,把它变成黑色就可以了。
    除此之外,其他情况都会违背红黑树的定义,于是我们就需要进行调整,调整的过程包含两种基础的操作:左右旋转和改变颜色。
    红黑树的插入旋转和变色,请看这篇

2.3 删除

  • 看着很晕,先不写了

3. 代码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/480293.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度学习在用户画像标签模型中的应用

原文地址&#xff1a;https://blog.csdn.net/chaishen10000/article/details/79324016 最近一段时间都在学习深度学习&#xff0c;想着在用户画像标签模型中看能不能用上&#xff0c;终于&#xff0c;用了一个多月的时间&#xff0c;结合实际的场景和数据&#xff0c;搭建了一套…

最强京东Java面试题(共现场4面)

一面&#xff08;基础面&#xff1a;约1个小时&#xff09; 自我介绍&#xff0c;主要讲讲做了什么和擅长什么 springmvc和spring-boot区别 Autowired的实现原理 Bean的默认作用范围是什么&#xff1f;其他的作用范围&#xff1f; 索引是什么概念有什么作用&#xff1f;MyS…

工业界求解NER问题的12条黄金法则

星标/置顶小屋&#xff0c;带你解锁最萌最前沿的NLP、搜索与推荐技术文 | JayLou娄杰&#xff0c;夕小瑶编 | 可盐可甜兔子酱美 | Sonata众所周知&#xff0c;命名实体识别&#xff08;Named Entity Recognition&#xff0c;NER&#xff09;是一项基础而又重要的NLP词法分析任…

POJ 1577 Falling Leaves(二叉查找树)

题目链接&#xff1a;http://poj.org/problem?id1577 题目大意&#xff1a; 二叉查找树按照叶子节点&#xff0c;从下往上抹去该树&#xff0c;给出抹除字符序列&#xff0c;求该二叉树&#xff0c;并前序打印 解题思路&#xff1a; 最后抹除的是根节点&#xff0c;把抹除的…

最新阿里内推高级Java面试题

阿里Java一面题目 osi七层网络模型&#xff0c;五层网络模型&#xff0c;每次层分别有哪些协议 死锁产生的条件&#xff0c; 以及如何避免死锁&#xff0c;银行家算法&#xff0c;产生死锁后如何解决 如何判断链表有环 虚拟机类加载机制&#xff0c;双亲委派模型&…

智能投顾-用户画像、投资组合选择、推荐引擎、大数据挖掘

智能投顾面面观之AI慕课 原文地址&#xff1a;https://www.jianshu.com/p/437c895794e0?utm_campaignharuki&utm_contentnote&utm_mediumreader_share&utm_sourceweixin “最后编辑于 2017.11.14 21:49”>2017.11.13 11:47* 自我介绍 大家好&#xff0c;我是…

论文浅尝 | KG Embedding with Iterative Guidance from Soft Rules

论文链接&#xff1a;https://www.aaai.org/ocs/index.php/AAAI/AAAI18/paper/download/16369/16011发表会议&#xff1a;AAAI 2018摘要知识图谱表示学习旨在将实体和关系嵌入到向量空间&#xff0c;同时保留知识图谱的内在结构。传统方法主要基于关系三元组学习知识图谱的嵌入…

人工智能轨道交通行业周刊-第69期(2023.12.11-12.24)

本期关键词&#xff1a;集装箱智能管理、智慧工地、智能应急机器人、车辆构造、大模型推理 1 整理涉及公众号名单 1.1 行业类 RT轨道交通人民铁道世界轨道交通资讯网铁路信号技术交流北京铁路轨道交通网上榜铁路视点ITS World轨道交通联盟VSTR铁路与城市轨道交通RailMetro轨…

可信知识实证在UGC时代情报应用中的思考与探索

可信知识实证在UGC时代情报应用中的思考与探索 在当前互联网高度发达、可发布信息源和信息渠道猛增且多元化的大背景下&#xff0c;信息形态变得广泛且多模。从传统的纸质文档&#xff0c;到中期的电子结构化文档、电子非结构化文本&#xff0c;再到如今的语音信息、图片信息、…

Google | 创造Youtube单次上线最高收益!解决推荐中的信息茧房困境

星标/置顶小屋&#xff0c;带你解锁最萌最前沿的NLP、搜索与推荐技术文 | 江城编 | 夕小瑶今天分享一下Google在WSDM 2019的一篇将强化学习应用于Youtube推荐的论文&#xff0c;作者宣称是获得了Youtube近两年来单次上线的最高收益。文章仔细介绍了RL在Youtube上的实践方案细节…

POJ 2785 有多少种4个数相加等于0的方案(二分查找 or hash)

文章目录1.二分查找法1.1 思路&#xff1a;1.2 AC代码2.hash查找法2.1 思路&#xff1a;2.2 Wrong Answer 代码2.3 Time Limit Exceeded 代码2.4 偷懒失败&#xff0c;hash_map在poj中不存在2.5 哈希表二叉查找树&#xff08;超时&#xff09;2.6 AC代码&#xff08;哈希数组法…

2018最新阿里Java技术三面(已拿Offer):JVM+高并发性能+单点登录+微服务

一面 1.自我介绍 2.谈一个你觉得你学到最多的项目&#xff0c;使用了什么技术&#xff0c;挑战在哪里 3.Spring的bean的作用域&#xff1f;&#xff08;比如&#xff1a;singleton&#xff0c;prototype等&#xff09; 4.Spring的IOC实现原理&#xff1f;没有无参构造函数能…

论文浅尝 | 基于局内去噪和迁移学习的关系抽取

动机在远程监督任务中&#xff0c;除了语料的错误标注问题&#xff0c;还存在句内噪声单词过多的问题&#xff0c;即多数句子都存在一些与表达关系无关的词汇&#xff0c;这个问题未有人关注。当前研究的另一个问题是&#xff0c;句子特征抽取器采用随机初始化的方法&#xff0…

关于知识图谱,我们接下来该研究什么?斯坦福教授们给出了答案

星标/置顶小屋&#xff0c;带你解锁最萌最前沿的NLP、搜索与推荐技术文 | 舒意恒&#xff08;南京大学硕士生&#xff0c;知识图谱方向&#xff09;编 | 北大小才女小轶本文整理了斯坦福大学 CS 520 知识图谱研讨会课程的第 10 集的内容&#xff0c;主要是关于知识图谱未来的研…

POJ 2967 (水题,考察putchar()按位输入)

题目链接&#xff1a;http://poj.org/problem?id2967 题目大意&#xff1a; 给定系列长度&#xff0c;求是否有规定的三角形 &#xff08;不是所有的都可以组成三角形&&有至少一种组合可以组成三角形&#xff09;-> 打印通过&#xff0c;否则打印拒绝。 题目有时…

四大银行(工建农中)大数据进展如何?

原文地址&#xff1a;https://cloud.tencent.com/developer/article/1052576 中国建设银行中国建设银行信息技术管理部资深经理林磊明▼▼1、银行压力越来越大从十二五走到十三五期间&#xff0c;银行业面临的各方面的压力越来越大&#xff0c;从我们的年报数字可以看出去年四大…

论文浅尝 | 多内容实体和关系联合抽取的对抗训练

链接&#xff1a;https://arxiv.org/pdf/1808.06876.pdf动机Szegedy 在 14 年发现&#xff0c;对于图像分类问题的神经网络&#xff0c;若是在输入中人为的添加很小尺度的扰动&#xff0c;会让已经训练好的神经网络做出错误的判断&#xff0c;并且可能以很高的置信度输出。很多…

BAT面试进阶:最全Memcached面试30题含答案

【memcached面试题目】 Memcached服务在企业集群架构中应用场景? Memcached服务在不同企业业务应用场景中的工作流程? Memcached服务分布式集群如何实现&#xff1f; Memcached服务特点及工作原理是什么&#xff1f; Memcached内存管理机制原理&#xff1f; Memcached的…

一份从入门到精通NLP的完整指南 | NLPer

该小博主介绍本人&#xff1a;笔名zenRRan&#xff0c;方向自然语言处理&#xff0c;方法主要是深度学习。未来的目标&#xff1a;人工智能之自然语言处理博士。写公众号目的&#xff1a;将知识变成开源&#xff0c;让每个渴求知识而难以入门人工智能的小白以及想进阶的小牛找到…

论文浅尝 | 基于知识库的类型实体和关系的联合抽取

链接&#xff1a;http://hanj.cs.illinois.edu/pdf/www17_xren.pdfGitHub项目地址&#xff1a;https://github.com/INK-USC/DS-RelationExtraction动机现有的利用远程监督进行实体关系抽取的方法中存在以下三个问题&#xff1a;1、依赖事先训练的命名实体识别工具&#xff0c;而…