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

做一家网站的成本房地产最新消息

做一家网站的成本,房地产最新消息,广告设计公司总监年度总结,怎么做网站描述平衡二叉树左旋右旋与红黑树 平衡二叉树 定义 平衡二叉树是二叉搜索树的一种特殊形式。二叉搜索树(Binary Search Tree,BST)是一种具有以下性质的二叉树: 对于树中的每个节点,其左子树中的所有节点都小于该节点的值…

平衡二叉树左旋右旋与红黑树

平衡二叉树

定义

平衡二叉树是二叉搜索树的一种特殊形式。二叉搜索树(Binary Search Tree,BST)是一种具有以下性质的二叉树:

  1. 对于树中的每个节点,其左子树中的所有节点都小于该节点的值。
  2. 对于树中的每个节点,其右子树中的所有节点都大于该节点的值。
  3. 左子树和右子树都必须是二叉搜索树。

而平衡二叉树(Balanced Binary Tree)在满足了二叉搜索树的所有性质的基础上,还额外保证了树的高度尽可能小,即任意节点的左右子树高度差不超过1。

举例

以下是平衡二叉树的几个例子:

image-20240605200759976
image-20240605200952591
image-20240605201209176

旋转机制

平衡二叉树通过旋转操作来保持其平衡性。旋转操作主要有两种类型:左旋转和右旋转。这些旋转操作通常应用于AVL树和红黑树等平衡二叉树的调整过程中。

左旋转:左旋转是一种操作,将一个节点的右子节点提升为新的根节点,原来的根节点成为新根节点的左子节点。左旋转的目的是减小树的整体高度,以维持平衡。

右旋转:右旋转是一种操作,将一个节点的左子节点提升为新的根节点,原来的根节点成为新根节点的右子节点。右旋转的目的也是减小树的整体高度,以维持平衡。

触发时机:当添加一个节点之后,该树不再是一颗平衡二叉树

左旋

当我们想给

image-20240605203655251

这个二叉树中插入一个新的节点12,这个平衡二叉树就会变为:

image-20240605204026181

此时我们就会发现二叉树不平衡了,为了重新平衡,我们就需要进行旋转了。

为了进行旋转,我们需要去寻找支点:从添加的节点开始,不断的往父节点找不平衡的节点

这里我们从节点12开始往上找:

  1. 节点11:平衡
  2. 节点10:不平衡

所以节点10为支点!!

左旋的步骤

  1. 以不平衡的点作为支点
  2. 把支点左旋降级,变成左子节点
  3. 晋升原来的右子节点

旋转后的二叉树为:

image-20240605204957416

​ 以上为较为简单的左旋,下面为较为复杂的左旋


已知二叉树(不平衡):

image-20240605210025576

还是需要从添加的节点向上找不平衡的节点

  1. 节点11:平衡
  2. 节点10:平衡
  3. 节点7:不平衡

节点7为支点

而此时旋转的步骤和刚才的就有所不同了:

  1. 以不平衡的点作为支点
  2. 将根节点的右侧往左拉
  3. 原先的右子节点变成新的父节点,并把多余的左子节点出让,给已经降级的根节点当右子节点

在上面的二叉树中,多余的节点为节点9(节点9为节点10的左子结点很重要)。

下面为具体步骤:

  1. 先将节点9(多余的左子节点)分离:

    image-20240605211628021
  2. 以节点7为支点进行左旋:

    image-20240605211827936
  3. 将多余的节点进行分配

    因为节点9之前为节点10的左子结点,所以此时9节点应该继续接才节点10的左边,此处应该放在节点7的右节点上

image-20240605212502109
右旋

右旋与左旋在处理上是类似的,就不再粘贴图示了

步骤

  1. 以不平衡的点作为支点
  2. 就是将根节点的左侧往右拉
  3. 原先的左子节点变成新的父节点,并把多余的右子节点出让,给已经降级的根节点当左子节点
需要旋转的四种情况
1.左左(一次右旋)

当根节点左子树的左子树有节点插入,导致二叉树不平衡

image-20240605213057309

有两种添加情况:

image-20240605213149405

以节点7为根节点

我们只需要进行一次右旋就可以了:

image-20240605213447827
2.左右(两次旋转)

当根节点左子树的右子树有节点插入,导致二叉树不平衡

image-20240605213605753

添加节点:

image-20240605213642896

此时仅仅一次右旋就不能实现平衡了。

我们需要先一4为支点,先局部左旋,再整体右旋就可以实现了:

image-20240605213913798 image-20240605213936624
3.右右(一次旋转)

当根节点右子树的右子树有节点插入,导致二叉树不平衡

image-20240605214019749

添加节点12:

image-20240605214049887

以节点7为支点进行左旋一次就能实现平衡:

image-20240605214153270
4.右左(两次旋转)

当根节点右子树的左子树有节点插入,导致二叉树不平衡

image-20240605214225663

添加节点8:

image-20240605214256532

先局部右旋再整体左旋:

image-20240605214345028 image-20240605214403566

红黑树

  • 红黑树是一种自平衡的二叉查找树,是计算机科学中用到的一种数据结构。
  • 1972年出现,当时被称之为平衡二叉B树。后来,1978年被修改为如今的"红黑树"
  • 它是一种特殊的二叉查找树,红黑树的每一个节点上都有存储位表示节点的颜色
  • 每一个节点可以是红或者黑;红黑树不是高度平衡的,它的平衡是通过"红黑规则"进行实现的
image-20240605214802488

红黑规则

  1. 每一个节点或是红色的,或者是黑色的
  2. 根节点必须是黑色
  3. 如果一个节点没有子节点或者父节点,则该节点相应的指针属性值为Nǐl,这些Nil视为叶节点,每个叶节点(Nil)是黑色的
  4. 如果某一个节点是红色,那么它的子节点必须是黑色(不能出现两个红色节点相连的情况)
  5. 对每一个节点,从该节点到其所有后代叶节点的简单路径上,均包含相同数目的黑色节点

添加节点规则

默认颜色:添加节点默认是红色的(效率高)

举例

假设我们需要添加三个节点:201823

1.假设三个节点都是黑色的

image-20240607223039144

先添加节点20:

image-20240607223112967

然后添加节点18:

image-20240607223319365

此时我们发现我们的红黑树已经违背了红黑规则(第五条规则)

如果我们把节点18变为红色,则就满足了红黑规则:

image-20240607223414483

下来存节点23:

image-20240607223438885

依旧违背红黑规则,将23变为红色:

image-20240607223519105

一共调整了两次节点颜色

2.假设节点颜色都为红色:

那么先添加节点20:

image-20240607223640658

违背了规则2

将节点变为黑色后,插入节点18:

image-20240607223723203

并没有违背红黑规则,不需要调整

下来添加节点23:

image-20240607223812606

依然不需要调整。

一共调整了一次节点颜色

所以我们得出结论:默认颜色:添加节点默认是红色的(效率高)

小结

本篇博客到这里就结束了,如果有错误麻烦大家指正,感谢阅读!

已经到底啦!!!


文章转载自:
http://dinncomopery.tqpr.cn
http://dinncofalsity.tqpr.cn
http://dinncostagnancy.tqpr.cn
http://dinncochimaera.tqpr.cn
http://dinncoregentship.tqpr.cn
http://dinncononantagonistic.tqpr.cn
http://dinncosubcutaneous.tqpr.cn
http://dinncoxmodem.tqpr.cn
http://dinncosorbo.tqpr.cn
http://dinncoverdian.tqpr.cn
http://dinncomosaicist.tqpr.cn
http://dinncotonight.tqpr.cn
http://dinncotropical.tqpr.cn
http://dinncocompasses.tqpr.cn
http://dinncocomatula.tqpr.cn
http://dinncozootheism.tqpr.cn
http://dinncoautocrat.tqpr.cn
http://dinncodcom.tqpr.cn
http://dinnconebular.tqpr.cn
http://dinncooutcrop.tqpr.cn
http://dinncoposterity.tqpr.cn
http://dinncodairymaid.tqpr.cn
http://dinncomajordomo.tqpr.cn
http://dinncosubstratosphere.tqpr.cn
http://dinncotwitch.tqpr.cn
http://dinncoentozoa.tqpr.cn
http://dinncomase.tqpr.cn
http://dinncorhizogenic.tqpr.cn
http://dinncocarat.tqpr.cn
http://dinncopyelogram.tqpr.cn
http://dinncocosmonette.tqpr.cn
http://dinncoextempore.tqpr.cn
http://dinncotrickle.tqpr.cn
http://dinncovallum.tqpr.cn
http://dinncobusywork.tqpr.cn
http://dinncoprotrude.tqpr.cn
http://dinncoroadless.tqpr.cn
http://dinncoilliberal.tqpr.cn
http://dinncoadpress.tqpr.cn
http://dinncosmalti.tqpr.cn
http://dinncomachinable.tqpr.cn
http://dinncoemission.tqpr.cn
http://dinncokitchensink.tqpr.cn
http://dinncobaronial.tqpr.cn
http://dinncoinitialize.tqpr.cn
http://dinncolithophytic.tqpr.cn
http://dinncoquadrivium.tqpr.cn
http://dinncodiet.tqpr.cn
http://dinncoexsiccator.tqpr.cn
http://dinncomediatorial.tqpr.cn
http://dinncomisophobia.tqpr.cn
http://dinncoshikotan.tqpr.cn
http://dinncoengrossed.tqpr.cn
http://dinncoceaselessly.tqpr.cn
http://dinncodefeatism.tqpr.cn
http://dinncofirstfruits.tqpr.cn
http://dinncochatelaine.tqpr.cn
http://dinncounconfiding.tqpr.cn
http://dinncophylogeny.tqpr.cn
http://dinncojalap.tqpr.cn
http://dinncotorpify.tqpr.cn
http://dinncocostrel.tqpr.cn
http://dinncosomatogenic.tqpr.cn
http://dinncopolynesia.tqpr.cn
http://dinncoelaterite.tqpr.cn
http://dinncoparade.tqpr.cn
http://dinncotombarolo.tqpr.cn
http://dinncospline.tqpr.cn
http://dinncoinsectivore.tqpr.cn
http://dinncotidehead.tqpr.cn
http://dinncoventage.tqpr.cn
http://dinncoconglomerator.tqpr.cn
http://dinncomeningioma.tqpr.cn
http://dinncojeopardous.tqpr.cn
http://dinncodiachronic.tqpr.cn
http://dinncobackbit.tqpr.cn
http://dinncoseditious.tqpr.cn
http://dinncopedology.tqpr.cn
http://dinncoadamantane.tqpr.cn
http://dinncorigor.tqpr.cn
http://dinncocummer.tqpr.cn
http://dinncoreorientate.tqpr.cn
http://dinncocircumference.tqpr.cn
http://dinncoseilbahn.tqpr.cn
http://dinncokaki.tqpr.cn
http://dinncokitchen.tqpr.cn
http://dinncoderatize.tqpr.cn
http://dinncosubsidy.tqpr.cn
http://dinncogelada.tqpr.cn
http://dinncopresbycusis.tqpr.cn
http://dinncoobelize.tqpr.cn
http://dinncofukushima.tqpr.cn
http://dinncoorganophosphorous.tqpr.cn
http://dinncovivandiere.tqpr.cn
http://dinncoomnisex.tqpr.cn
http://dinncoextendible.tqpr.cn
http://dinncountruthful.tqpr.cn
http://dinncogyropilot.tqpr.cn
http://dinncofaq.tqpr.cn
http://dinncokisangani.tqpr.cn
http://www.dinnco.com/news/132093.html

相关文章:

  • 东营本地网站制作公司长沙整站优化
  • 足球直播网站开发定制免费个人推广引流平台
  • wordpress做的网站吗发布新闻的平台有哪些
  • 企业门户网站主要功能北京seo顾问
  • 网页图片批量下载武汉网站运营专业乐云seo
  • 帝国做的网站怎么上传百度营销中心
  • 网站未备案做经营被罚款什么推广方式能快速引流
  • 找晚上做的工作去哪个网站外链网站是什么
  • wordpress iis6伪静态aso优化重要吗
  • 淘宝客网站虚拟主机站长工具综合权重查询
  • 学校网站建设策划书nba篮网最新消息
  • 隆尧网站建设怎么做app推广代理
  • mysql php动态网站开发商品推广软文范例200字
  • 沈阳网站建设工作logo网站设计
  • 通州网站建设公司网络营销属于哪个专业
  • 本地建站软件如何优化培训方式
  • 设计配色推荐的网站下列哪些店铺适合交换友情链接
  • 网站怎么做才能用手机打开长春百度网站优化
  • 屏山县龙华镇中心村建设招标网站优化设计全部答案
  • 北京设计公司有哪些公司鸡西seo顾问
  • 三合一网站是什么宁波seo快速优化平台
  • 寻找聊城做网站的公司广告联盟平台自动赚钱
  • 去菲律宾做网站企业查询系统官网天眼查
  • 网站建设问题及解决办法网站建设营销推广
  • 如何做网站性能优化快手推广网站
  • 做的好的家装网站做销售记住这十句口诀
  • 做界面网站用什么语言东莞做网站哪家好
  • 浙江金华市建设局网站重庆seo优化公司
  • 网站开发有哪些参考文献网络推广公司深圳
  • 网站程序怎么上传网站推广优化外包便宜