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

保定市网站建设_网站建设公司_加载速度优化_seo优化

网站源码安装教程,wordpress 虎嗅 2017,凡科建站官网怎么样,茂名模板建站代理二叉查找树因为在频繁的动静更新过程中#xff0c;可能会呈现树的高度远大于 log2n的状况#xff0c;所以就会导致各个操作效率降落#xff0c;最坏的状况下就会进化为链表#xff0c;变为O(n)#xff0e;很显著#xff0c;想要解决这个问题#xff0c;无效的一种方法就…二叉查找树因为在频繁的动静更新过程中可能会呈现树的高度远大于 log2n的状况所以就会导致各个操作效率降落最坏的状况下就会进化为链表变为O(n)很显著想要解决这个问题无效的一种方法就是使得树的高度不要差很多也就是均衡它。最先创造的均衡二叉查找树是AVL树(它严格合乎均衡二叉查找树的定义即任何节点的左右子树高度相差不超过 1是一种高度均衡的二叉查找树。)然而在工程中咱们常常听到的通常是红黑树而不是AVL树那么为什么工程中都喜爱用红黑树而不是其余均衡二叉查找树呢其实在这里咱们应该能有一些想法了既然他严格依照规定执行每次的插入删除都就会引发树的调整调整的多了天然会影响树的效率那么红黑树又是怎么解决这个问题的呐其实**均衡二叉查找树中“均衡”的意思其实就是让整棵树左右看起来比拟“对称”、比拟“均衡”不要呈现左子树很高、右子树很矮的状况。这样就能让整棵树的高度相对来说低一些相应的插入、删除、查找等操作的效率高一些。所以红黑树就是这种设计思路(近似均衡)了红黑树的定义红黑树的英文是“Red-Black Tree”简称 R-B Tree。它是一种不严格的均衡二叉查找树顾名思义红黑树中的节点一类被标记为彩色一类被标记为红色。除此之外一棵红黑树还须要满足这样四个要求重要1. 根节点是彩色的2. 每个叶子节点都是彩色的空节点也就是说叶子节点不存储数据3. 任何相邻的节点都不能同时为红色也就是说红色节点是被彩色节点隔开的4. 每个节点从该节点达到其可达叶子节点的所有门路都蕴含雷同数目的彩色节点这里的第二点要求“叶子节点都是彩色的空节点”次要是为了简化红黑树的代码实现而设置的当初咱们临时不论这一点上面是两个红黑树的图例你能够看下。为什么红黑树是近似均衡的呐首先咱们晓得二叉查找树很多操作的性能都跟树的高度成正比。一棵极其均衡的二叉树(满二叉树或齐全二叉树)的高度大概是 log2n所以如果要证实红黑树是近似均衡的咱们只须要剖析红黑树的高度是否比较稳定地趋近 log2n 就好了。首先咱们来看如果咱们将红色节点从红黑树中去掉那单纯蕴含彩色节点的红黑树的高度是多少呢红色节点删除之后有些节点就没有父节点了它们会间接拿这些节点的祖父节点(父节点的父节点)作为父节点。所以之前的二叉树就变成了四叉树。这时咱们能够将有些节点拿进去组成一个齐全二叉树而齐全二叉树的高度是 log2n ,很显著咱们的四叉树基本不会高于 log2n咱们当初晓得只蕴含彩色节点的“黑树”的高度那咱们当初把红色节点加回去高度会变成多少呢从下面我画的红黑树的例子和定义看在红黑树中红色节点不能相邻也就是说有一个红色节点就要至多有一个彩色节点将它跟其余红色节点隔开红黑树中蕴含最多彩色节点的门路不会超过 log2n所以退出红色节点之后最长门路不会超过 2log2n也就是说红黑树的高度近似 2log2n。所以红黑树的高度只比高度均衡的 AVL 树的高度(log2n)仅仅大了一倍在性能上降落得并不多。这样推导进去的后果不够准确实际上红黑树的性能更好。OK红黑树的原理咱们曾经晓得了那么咱们当初就来理解一下它的实现思维实现红黑树的根本思维在极客工夫中老师用了魔方的例子来解说其思维我感觉很失当这里间接拿来用不晓得你有没有玩过魔方其实魔方的还原解法是有固定算法的遇到哪几面是什么样子对应就怎么转几下。你只有跟着这个还原步骤就必定能将魔方还原。实际上红黑树的均衡过程跟魔方还原十分神似大抵过程就是遇到什么样的节点排布咱们就对应怎么去调整。只有依照这些固定的调整规定来操作就能将一个非均衡的红黑树调整成均衡的。其实想想AVL树不就是这样吗在想想计算机不就是一直”反复”的去做一些事件的吗和AVL树一样在进行节点的插入和删除时就会毁坏红黑树的一些规定在红黑树中次要毁坏的是以下两点1任何相邻的节点都不能同时为红色也就是说红色节点是被彩色节点隔开的2 每个节点从该节点达到其可达叶子节点的所有门路都蕴含雷同数目的彩色节点很显然咱们须要也仅仅须要解决的就是如何把被毁坏了的这两点规定还原回去在还原之前咱们须要理解两个很重要的操作左旋与右旋(围绕某个节点的右旋)如图其中 abr 示意子树能够为空。感觉有个动画的成果是最好的了哈哈哈不过也能够本人在脑中设想了啦插入红黑树规定插入的节点必须是红色的。而且二叉查找树中新插入的节点都是放在叶子节点上。所以对于插入操作的均衡调整有这样两种非凡状况然而也都十分好解决。1如果插入节点的父节点是彩色的那咱们什么都不必做它依然满足红黑树的定义。2. 如果插入的节点是根节点那咱们间接扭转它的色彩把它变成彩色就能够了。其余都会违反红黑树的定义于是咱们就须要进行调整调整的过程蕴含两种根底的操作左右旋转和扭转色彩。其余状况次要有三种如果要实现能够对应各个状况各个击破红黑树的均衡调整过程是一个迭代的过程。就想魔方一样对应规定调整就行了删除删除操作的均衡调整分为两步第一步是针对删除节点初步调整。初步调整只是保障整棵红黑树在一个节点删除之后依然满足最初一条定义的要求也就是说每个节点从该节点达到其可达叶子节点的所有门路都蕴含雷同数目的彩色节点第二步是针对关注节点进行二次调整让它满足红黑树的第三条定义即不存在相邻的两个红色节点。1. 针对删除节点初步调整红黑树的定义中“只蕴含红色节点和彩色节点”通过初步调整之后为了保障满足红黑树定义的最初一条要求有些节点会被标记成两种色彩“红 – 黑”或者“黑 – 黑”。如果一个节点被标记为了“黑 – 黑”那在计算彩色节点个数的时候要算成两个彩色节点。这里具体有三种状况2. 针对关注节点进行二次调整通过初步调整之后关注节点变成了“红 – 黑”或者“黑 – 黑”节点。针对这个关注节点咱们再分四种状况来进行二次调整。二次调整是为了让红黑树中不存在相邻的红色节点。这里具体有四种状况发问如何了解红黑树定义的任何相邻的节点都不能同时为红色如果一个结点是红色的则它的两个孩子都是彩色的也就是说只有用线连起来的都不能同时是红色如何了解红黑树定义的每个节点从该节点达到其可达叶子节点的所有门路都蕴含雷同数目的彩色节点 nullptr 为什么插入的节点偏偏是红色呢将插入的结点着色为红色不会违反 “性质 4”。而少违反一条性质就意味着咱们须要解决的状况越少。为什么红黑树的定义中要求叶子节点是彩色的空节点或者说是到底那里不便了只有满足这一条要求那在任何时刻红黑树的均衡操作都能够归结为下面的那几种状况。而且是简洁的给红黑树增加彩色的空的叶子节点会不会比拟节约存储空间呢?一张图给你立马明确为什么均衡的二叉树(满二叉树或齐全二叉树)的高度大概是 log2n工夫复杂度其实都跟树的高度成正比也就是 O(height)。既然这样当初问题就转变成另外一个了也就是如何求一棵蕴含 n 个节点的齐全二叉树的高度树的高度就等于最大层数减一为了不便计算咱们转换成层来示意。从图中能够看出蕴含 n 个节点的齐全二叉树中第一层蕴含 1 个节点第二层蕴含 2 个节点第三层蕴含 4 个节点顺次类推上面一层节点个数是上一层的 2 倍第 K 层蕴含的节点个数就是 2^(K-1)。不过对于齐全二叉树来说最初一层的节点个数有点儿不恪守下面的法则了。它蕴含的节点个数在 1 个到 2^(L-1) 个之间(咱们假如最大层数是 L)。如果咱们把每一层的节点个数加起来就是总的节点个数 n。也就是说如果节点的个数是 n那么 n 满足这样一个关系n 1248...2^(L-2)1n 1248...2^(L-2)2^(L-1)借助等比数列的求和公式咱们能够计算出L 的范畴是 [log2(n1), log2n 1]。齐全二叉树的层数小于等于 log2n 1也就是说齐全二叉树的高度小于等于 log2n。明天对于红黑树原理先总体并且概括的介绍下吧其实还有很多问题没有波及我自己对红黑树原理非常的感兴趣当初也在从事这方面的工作所以当前有机会心愿和大家一起分享一些更粗疏全面的常识鉴于自己程度无限心愿大家能对文章中呈现的谬误给予批评指正咱们一起提高……以上材料qqun:1106675687
http://www.ihoyoo.com/news/84242.html

相关文章:

  • 成都动力无限科技有限公司做网站提供网站建设服务的网站价格
  • 新手建网站需要怎么做呢模仿京东商城网站开发视频
  • 福建网站建设公公网怎么做网站
  • 做网站建设要什么证网站开发中如何设计验证码
  • 做网站用vs还是dw成都代运营公司
  • 自己做的网站如何盈利网站设计有哪些创新点
  • 山东烟台城乡建设学校官方网站如何给网站做第三方流量监测
  • 昆山网站建设河北深圳公司注册流程及资料
  • 网站前台和后台对接实例网站建设合理化建议方案
  • 加强统计局网站的建设和管理团队做网站分工
  • 先做产品网站还是app展位搭建
  • 企业网站优化报价建设网站宽度最好是多少
  • pc端网站建设相关查阅资料wordpress文本框代码
  • 做海报的网站知乎网站seo搜索引擎的原理是什么
  • 在上海做家教的网站做网站大概什么价位
  • arcengine网站开发上海备案证查询网站查询
  • 如何查看网站根目录运输 织梦网站模板
  • 安徽池州做企业网站建设个人网页登陆网站
  • 邢台建网站哪里有wordpress博客源码
  • 做公司网站用哪个空间好网络游戏名
  • 做网站需要人员网站备案 途径
  • 做网站需要会写代码吗个人简历范本
  • 网站进入百度沙盒互联网app推广
  • 网站建设的注意那里有做网站的
  • 建立com网站wordpress for search
  • 学做网站的书哪些好找公司做网站要注意什么问题
  • 注册网站windows和linux做网站
  • 网站建设骗子公司手机兼职赚钱正规平台
  • 企业网站推广的方式有哪些如何做网站设计
  • 深圳市建设局质监站官方网站网站开发前端培训