当前位置: 首页 > news >正文

三门峡专业做网站公司app手机软件开发

三门峡专业做网站公司,app手机软件开发,网站开发人员绩效考核表,大网站建设目录 红黑树的规则 红黑树的效率 红黑树的插入规则 调整 情况一:u存在且为red 情况二:u不存在 或者 u存在但为black 情况1:使用右单旋变色处理 情况2:使用左单旋变色处理 情况3:使用左右双选变色处理 情况4&a…

目录

红黑树的规则

红黑树的效率

红黑树的插入规则

调整

情况一:u存在且为red

情况二:u不存在 或者 u存在但为black

情况1:使用右单旋+变色处理

情况2:使用左单旋+变色处理

情况3:使用左右双选+变色处理

情况4:使用右左双旋+变色处理

代码:


红黑树的规则

  1. 每个节点要么是红色,要么是黑色。

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

  3. 所有的叶子节点都是黑色的。在红黑树的定义中,通常将 nullptr 指针视为黑色的叶子节点 。这意味着实际存储数据的节点都有两个黑色的 NIL 孩子。

  4. 红色节点的两个子节点都必须是黑色的。这条规则也意味着不能有两个连续的红色节点。

  5. 黑高规则 (Black-Height): 从任意一个节点到其所有后代叶子节点 (NIL) 的简单路径上,经过的黑色节点的数量必须相同。这个数量被称为该节点的黑高这个规则是红黑树保持平衡的关键。它确保没有一条路径会比其他路径长出两倍以上(因为路径上的黑色节点数相同,而红色节点不能连续,所以最长的路径最多是最短路径的两倍长 - 最短路径全黑,最长路径红黑交替)

红黑树的效率

        由于规则5的限制我们知道红黑树的最短的路径是全黑的,如果这个树n个节点,那么他的最短路径最长不能超过就是log(n),那么他的最长路径最长就不能超过2*log(n)。所以效率是log(n)。

红黑树的插入规则

1.插入一个值按照二叉搜索树的规则进行插入,插入后我们需要判断是否符合红黑树的规则。

2. 如果是空树插入,那么新增的节点就是黑色的。如果是非空树插入,那么插入的节点就必须是红色的,因为非空树的插入是黑色的话就破坏了黑规则,而黑稿规则是很难维护的。

3.非空树的插入,如果他的父亲节点是黑色的,那么没有问题;如果他的父亲是红色的那么破坏了规则4,需要进行相应的变色调整和左旋右旋调整。 

调整

核心思想:插入的newnode一定是红色的,一定不能时黑色的,因为黑高是很难维护的。既然插入的都是红色的那么就肯定需要调整,调整是从newnode开始向上调整

出现需要调整时的情况一定是:newnoded=red,p=red,g=black我所使用的newnode不全是代表新增节点,理解为一个特殊位置的节点就好,p为父亲节点,g给父亲节点的父亲节点,u为父亲节点的兄弟节点)

情况一:u存在且为red

将g变为red,p和u变成black。但是还没有结束,要将g当作新的c继续向上更新。但是如果g是根了,那么要将g再变回黑色。(图中c的位置就是newnode的位置)

情况二:u不存在 或者 u存在但为black

如果u不存在那么newnode是新增节点,如果u存在且为黑那么newnode不是新增的节点是由原来的黑色变成的红色。(原因:若u不存在且newnode是由原来的黑色变成的红色,那么原来经过newnode节点的路径的黑高就一定大于经过p的黑高,不满足黑高条件;若u存在且为黑且newnode是新增的红色叶子节点那么就经过newnode的路径的黑高就一定小于经过u的黑高,不满足黑高条件。)

下面分四种情况来处理,情况的分类跟AVL树一致,可以参考博主的这篇文章:AVL树中的旋转-CSDN博客

情况1:使用右单旋+变色处理

情况2:使用左单旋+变色处理

跟情况1类似,略。

情况3:使用左右双选+变色处理

情况4:使用右左双旋+变色处理

跟情况3类似,略。

代码

red_black_tree.cpp · VEwater/cpp - 码云 - 开源中国

http://www.dtcms.com/a/546595.html

相关文章:

  • 在多线程中使用RequestScope的bean【最佳实践】
  • 百度商桥怎么嵌入网站公司网站建设内部调查
  • AOI在FPC制造领域的检测应用
  • 沧州网站建设优化公司seo排名快速优化
  • 杭州网站优化咨询西安软件开发培训机构
  • 南宁论坛建站模板东营建设信息网网
  • AI+若依框架(实战篇)-后转
  • 备案号被取消 没有重新备案网站会被关闭吗域名怎么查
  • 网站建设需要什么书沧州市快伟网络科技有限公司
  • 专业建设网站外包河北承德建设工程信息网站
  • 网站栏目和版块的设计心得学做美食视频在哪个网站
  • Windchill10+html使用Lightbox轻量化wizard的配置
  • 番禺区住房和建设局网站wordpress crawling
  • 网站策划书包括哪几个步骤十堰优化网站哪家好
  • 04-函数与模块-导读
  • html5网站是用什么软件做的吗防疫网站网页设计
  • 【教学类-120-03】20251029十个数字横排1*10切割,5-35的边距,切割10次,手工挑选
  • 网站做联盟广告能赚钱吗个人网站 平台
  • 网站源码采集平面作品集展示图片
  • 建设网站需要什么要求小升初最好的补课机构排行榜
  • 做网站整理信息的表格wordpress企业建站
  • 济南网站建设询问企优互联价低个人网站设计内容和要求
  • Rust impl块的组织方式:从基础到实践的深度探索
  • 【AI WorkFow】n8n 源码分析-节点和工作流结构说明(二)
  • 仓颉线程池管理策略深度解析
  • 做网站域名的好处是什么wordpress安装不了插件
  • 做企划的网站山东网站建设哪里好
  • 网站自创汽车行业网站建设比较好
  • 揭阳网站制作服务龙岩正规全网品牌营销招商
  • 成都市网站建设哪家好怎么建设个人博客网站