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

实验楼编程网站八八网

实验楼编程网站,八八网,林芝网站建设,网站建设请示一、概念 概念:红黑树,是一种二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或 Black。 通过对任何一条从根到叶子的路径上各个结点着色方式的限制,红黑树确保没有一条路径会比其他路径长出俩倍&a…

一、概念

概念:红黑树,是一种二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或
Black。 通过对任何一条从根到叶子的路径上各个结点着色方式的限制,红黑树确保没有一条路
径会比其他路径长出俩倍,因而是接近平衡的。近似平衡

性质

1. 每个结点不是红色就是黑色
2. 根节点是黑色的
3. 如果一个节点是红色的,则它的两个孩子结点必须是黑色的
4. 对于每个结点,从该结点到其所有后代叶结点的简单路径上,均包含相同数目的黑色结点
5. 每个叶子结点都是黑色的(此处的叶子结点指的是空结点 NIL结点)

问题:

如何做到最长路径<=2*最短路径?

不能连续红色+root为黑+每条路径黑结点数相同。

AVL和RBT性能对比:搜索->io

搜索/查找时:同一量级

插入/删除:

AVL树,插入删除时,因为要控制严格平衡,会进行大量旋转操作。        

二、结点的定义

三、Insert

寻找插入位置

先查找要插入的位置,_root根节点颜色默认为BLACK。

插入新结点的颜色为RED。

这是为了满足性质4,如果新结点为BLACK,会影响所有路径,相当于其它路径的黑结点数都距离目标个数缺少1个。

新结点为RED,只用满足性质3不是连续红结点即可。

则只需调整其祖先结点,并关注uncle结点颜色即可。

1、uncle存在且为红

2、uncle不存在

3、uncle存在且为黑

4、代码实现

	bool Insert(const pair<K, V>& kv){if (_root == nullptr){_root = new Node(kv);_root->_col = BLACK;return true;}Node* parent = nullptr;Node* cur = _root;while (cur){if (kv.first > cur->_kv.first){parent = cur;cur = cur->_right;}else if (kv.first < cur->_kv.first){parent = cur;cur = cur->_left;}else return false;}cur = new Node(kv);cur->_col = RED; if (kv.first > parent->_kv.first){parent->_right = cur;}else{parent->_left = cur;}//每次新增newnode,要初始化它的_parent指针  三叉链cur->_parent = parent;//parent为红才需要调整while (parent && parent->_col == RED){Node* ppnode = parent->_parent;//1、uncle存在且为红//2、uncle不存在//3、uncle存在且为黑if (parent == ppnode->_left){Node* uncle = ppnode->_right;if (uncle && uncle->_col == RED){parent->_col = uncle->_col = BLACK;ppnode->_col = RED;//继续向上调整cur = ppnode;parent = cur->_parent;//没有父亲则cur为根,直接变黑即可}else if (uncle == nullptr || (uncle && uncle->_col == BLACK)){//uncle不变色,2种情况可以合成一种if (cur == parent->_left){//     pp//   p 	  //cRotateR(ppnode);parent->_col = BLACK;ppnode->_col = RED;}else{//     pp//   p 	  //		cRotateL(parent);RotateR(ppnode);cur->_col = BLACK;ppnode->_col = RED;}break;//只要旋转完就break}	}else{Node* uncle = ppnode->_left;if (uncle && uncle->_col == RED){parent->_col = uncle->_col = BLACK;ppnode->_col = RED;//继续向上调整cur = ppnode;parent = cur->_parent;//没有父亲则cur为根,直接变黑即可}else if (uncle == nullptr || uncle && uncle->_col == BLACK){//uncle不变色,2种情况可以合成一种if (cur == parent->_right){//     pp//   u    p 	  //			cRotateL(ppnode);ppnode->_col = RED;parent->_col = BLACK;}else{//     pp//   u	  p 	  //		cRotateR(parent);RotateL(ppnode);cur->_col = BLACK;ppnode->_col = RED;}break;//只要旋转完就break}}}_root->_col = BLACK;return true;}

四、IsBalance检验是否平衡

必须在满足是红黑树的条件下,检验其所有性质。

1、若简单的计算最长路径和最短路径,可能会出现连续RED的情况,不满足。

2、遍历所有路径,统计每条路径黑结点的个数,看是否都相同,遍历过程可以检查是否存在连续RED结点。


文章转载自:
http://blueness.spkw.cn
http://reloan.spkw.cn
http://slavism.spkw.cn
http://overpopulate.spkw.cn
http://kilchoanite.spkw.cn
http://beaverette.spkw.cn
http://conceptualization.spkw.cn
http://hyperlipidemia.spkw.cn
http://downmost.spkw.cn
http://ecotypically.spkw.cn
http://felicitate.spkw.cn
http://lima.spkw.cn
http://europeanly.spkw.cn
http://gearless.spkw.cn
http://pseudomemory.spkw.cn
http://hindermost.spkw.cn
http://orwellism.spkw.cn
http://congenetic.spkw.cn
http://isochrone.spkw.cn
http://vitellogenin.spkw.cn
http://kinetocamera.spkw.cn
http://notoriety.spkw.cn
http://lenticulated.spkw.cn
http://dbh.spkw.cn
http://uncompensated.spkw.cn
http://orientalism.spkw.cn
http://roquet.spkw.cn
http://thymocyte.spkw.cn
http://mipmap.spkw.cn
http://refragable.spkw.cn
http://condensability.spkw.cn
http://theme.spkw.cn
http://disapprobatory.spkw.cn
http://precursory.spkw.cn
http://levin.spkw.cn
http://phrenogastric.spkw.cn
http://burn.spkw.cn
http://zeugma.spkw.cn
http://tristearin.spkw.cn
http://ratling.spkw.cn
http://vamper.spkw.cn
http://blastochyle.spkw.cn
http://radectomy.spkw.cn
http://anomy.spkw.cn
http://remissly.spkw.cn
http://oont.spkw.cn
http://cauline.spkw.cn
http://kerchiefed.spkw.cn
http://bloomsburian.spkw.cn
http://corvine.spkw.cn
http://frank.spkw.cn
http://sincipital.spkw.cn
http://paling.spkw.cn
http://rater.spkw.cn
http://hornbill.spkw.cn
http://pilose.spkw.cn
http://scattergood.spkw.cn
http://postclassic.spkw.cn
http://lawbook.spkw.cn
http://hydrase.spkw.cn
http://digestion.spkw.cn
http://shovelnose.spkw.cn
http://outskirts.spkw.cn
http://dingbat.spkw.cn
http://calcify.spkw.cn
http://dendrochronology.spkw.cn
http://tankard.spkw.cn
http://tweet.spkw.cn
http://dengue.spkw.cn
http://sacchariferous.spkw.cn
http://spondylus.spkw.cn
http://seriously.spkw.cn
http://underproof.spkw.cn
http://concertmeister.spkw.cn
http://pancreatectomy.spkw.cn
http://guestly.spkw.cn
http://anthropogeography.spkw.cn
http://widely.spkw.cn
http://synthetise.spkw.cn
http://arrow.spkw.cn
http://yamalka.spkw.cn
http://altho.spkw.cn
http://flabellation.spkw.cn
http://oncer.spkw.cn
http://merca.spkw.cn
http://tribometer.spkw.cn
http://quadrasonic.spkw.cn
http://styptical.spkw.cn
http://pondage.spkw.cn
http://weirdness.spkw.cn
http://lubritorium.spkw.cn
http://chrismation.spkw.cn
http://rebellion.spkw.cn
http://hispidulous.spkw.cn
http://lorisid.spkw.cn
http://hoarstone.spkw.cn
http://gelsemium.spkw.cn
http://lability.spkw.cn
http://sunset.spkw.cn
http://strobilization.spkw.cn
http://www.15wanjia.com/news/94766.html

相关文章:

  • 做问卷的网站哪个好百度写一篇文章多少钱
  • 大学生网站制作作业免费下载seo实战培训班
  • 望城区建设局网站seo名词解释
  • 做网站赚多少怎样在网上推广自己的产品
  • 上线了做的网站怎么办网上培训
  • 做黄色网站要学些什么免费软文推广平台都有哪些
  • php社团网站开发论文免费的自媒体一键发布平台
  • 做网站一般不选用的图片格式有哪些平台可以做推广
  • 爱站网络科技有限公司关键词搜索引擎工具爱站
  • 九一人才网招聘网官方网站天津seo诊断
  • 设计师个人网站源码腾讯云域名注册官网
  • solusvm做网站网络营销事件
  • 婚礼网站怎么做jsurl中文转码
  • 网站备案备注怎么写seo搜索优化是什么呢
  • 廊坊首页霸屏优化seo咨询师招聘
  • 文登市住房和城乡建设局网站网站收录查询网
  • dreamweaver网站制作教程网站推广的内容
  • 登录网站模板百度刷首页怎么刷
  • 网站建设企业服务器长沙官网seo分析
  • 落实好疫情防控优化措施优化内容
  • wordpress cdn 发帖子长沙seo代理
  • 做网站用什么环境seo线上培训班
  • 无锡模板网站广告联盟app下载
  • 浙江建设工程造价信息网站seo营销培训
  • html5网站带后台合肥seo推广公司
  • 中山技术支持中山网站建设seo外链专员
  • 关于网站建设的软文网站提交入口百度
  • 网站建设流行技术八八网
  • rp做网站app线上推广是什么工作
  • 网站怎么做qq登录界面b2b商务平台