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

中国手机最好的网站排名搜索引擎算法

中国手机最好的网站排名,搜索引擎算法,2020年建站公司还有前途吗,竞价单页网站制作一、概念 概念:红黑树,是一种二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色,可以是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://www.dinnco.com/news/31359.html

相关文章:

  • 奉贤武汉阳网站建设真正免费的网站建站平台
  • wordpress 森林宁波seo快速优化公司
  • java网站建设书籍广州疫情最新情况
  • 网络推广专员招聘要求seo 的原理和作用
  • 做网站前端用什么语言qq营销推广方法和手段
  • 网站开发建设公司今日新闻头条
  • 网站免费观看百度优化点击软件
  • 数商云公司简介做seo需要投入的成本
  • 临夏网站制作重庆网站建设维护
  • 做网站多少钱赚钱吗网站推广优化之八大方法
  • 跨境电商做什么平台好重庆电子商务seo
  • 多语言网站(如何实现网站的多语言版本 )企业网站制作方案
  • 非交互式网站百度官方网站下载安装
  • 什么样的网站可以做外链武汉seo全网营销
  • 服饰网站建设推广引流怎么做
  • 卖钢材做哪个宣传网站seo查询官方网站
  • 网站 建设 成品网页制作流程
  • 推荐聊城做网站的公司seo搜索优化
  • 网站开发企业开发天津百度网站排名优化
  • 麻城网站制作公司疫情最新情况 最新消息 全国
  • 中小企业网站建设公司seo的方式包括
  • 网站的静态页面谁做网络营销渠道的特点
  • wordpress绿色两栏响应式主题进行seo网站建设
  • 网站建设基本流程是什么全国疫情最新名单
  • 公司起名大全2021最新版的免费郑州seo优化顾问热狗
  • 网站公安备案 查询百度爱采购平台官网
  • 在招聘网站做电话销售怎么样品牌策划案例
  • 长沙网站建设哪家靠谱写软文的app
  • 饰品网站建设互联网营销策划案
  • 自己怎么优化网站排名网站友情链接是什么