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

开封做网站睿艺美建设行业证书全国联网查询

开封做网站睿艺美,建设行业证书全国联网查询,wordpress禁止留言网址,响应式网站适合优化吗文章目录 一. 红黑树规则二. 情况一叔叔存在且为红情况二.变色旋旋 一. 红黑树规则 对于红黑树#xff0c;进行变色旋转处理#xff0c;终究都是为了维持颜色以下几条规则#xff0c;只有颜色和规则维持住了#xff0c;红黑树就维持住了最长路径的长度不超过最短路径的两倍… 文章目录 一. 红黑树规则二. 情况一叔叔存在且为红情况二.变色旋旋 一. 红黑树规则 对于红黑树进行变色旋转处理终究都是为了维持颜色以下几条规则只有颜色和规则维持住了红黑树就维持住了最长路径的长度不超过最短路径的两倍。 规则 根是黑的。没有连续的红节点。每条路径的黑色数量相等。 二. 情况一叔叔存在且为红 注意点红黑树插入的节点都是红色的因为在红黑树中动黑色节点是非常忌讳的因为要维持每条路径黑色数量相等非常困难所以插入的节点默认都是红色的。 当插入红色节点后1.如果父亲为黑或者父亲不存在结束不需要任何处理。 2. 如果父亲存在且为红由于插入节点为红存在连续红节点需要处理可以肯定的是爷爷一定是黑因为插入节点前就是一棵红黑树了既然父亲和爷爷颜色确定主要看叔叔。 1.叔叔存在且为红 情况二.变色旋旋 叔叔存在且为黑或者叔叔不存在都需变色旋转关键分析是左单旋右单旋还是左右双旋还是右左双旋只要旋转后就平衡了直接结束不需要向上更新 1. 变色单旋 对于叔叔存在且为黑或不存在这种情况不可能是因为直接插入红色节点导致连续红这种情况直接发生的因为这发生了原本就不是红黑树一定是由上述图一第一种情况处理更新上来导致的。 解决办法curp-left, pg-left 左左右单旋g点 p变黑g变红。 同理如果上述情况curp-right, pg-right右右左单旋g点p变黑g变红 2.变色双旋 对于这种情况curp-right, pg-left,左右双旋 将p左旋g右旋 cur变黑g变红。 同理curp-left, pg-right, 右左双旋将p右旋g左旋cur变黑g变红 总结单纯变色处理需要不停向上更新至父亲不存在或者父亲为黑结束旋转变色处理完就平衡了直接结束。 一下是代码实现 bool Insert(const pairK, V kv){if (_root nullptr){_root new Node(kv);_root-_col BLACK; //根为黑色return true;}Node* parent nullptr;Node* cur _root;while (cur){if (cur-_kv.first kv.first){parent cur;cur cur-_right;}else if (cur-_kv.first kv.first){parent cur;cur cur-_left;}else{return false;}}cur new Node(kv);if (parent-_kv.first kv.first){parent-_right cur;}else{parent-_left cur;}cur-_parent parent;//父亲存在且为红连续红节点处理(如果父亲不存在管你红黑就结束了如果为黑也结束了while (parent parent-_col RED){Node* grandfather parent-_parent; //算出爷爷根据父亲为爷爷的左右确定叔叔if (parent grandfather-_left){Node* uncle grandfather-_right;//情况一叔叔存在且为红 变色处理if (uncle uncle-_col RED){parent-_col uncle-_col BLACK;grandfather-_col RED;//根节点保证为黑下面处理//继续往上处理cur grandfather;parent cur-_parent;}//情况二叔叔不存在/叔叔存在且为黑else{//需要判别单旋还是左旋确定cur的位置//旋转变色if (cur parent-_left){// g// p u//c//左左右单旋RotateR(grandfather);parent-_col BLACK;grandfather-_col RED;}else{// g// p u// c//左右双旋变色RotateL(parent);RotateR(grandfather);cur-_col BLACK;grandfather-_col RED;}break; //只要旋转结束就平衡了结束}}else{Node* uncle grandfather-_left;//情况一叔叔存在且为红 变色处理if (uncle uncle-_col RED){parent-_col uncle-_col BLACK;grandfather-_col RED;//根节点保证为黑下面处理//继续往上处理cur grandfather;parent cur-_parent;}//情况二叔叔不存在/叔叔存在且为黑else{if (cur parent-_right){// g// u p// cRotateL(grandfather);parent-_col BLACK;grandfather-_col RED;}else{// g// u p// c//右左双旋RotateR(parent);RotateL(grandfather);cur-_col BLACK;grandfather-_col RED;}//只要旋转完了就平衡结束了break;}}}_root-_col BLACK; //变色没有处理根无论怎么处理都保证根是黑的return true;}void RotateL(Node* parent){rotateSize;Node* subR parent-_right;Node* subRL subR-_left;parent-_right subRL;if (subRL)subRL-_parent parent;subR-_left parent;Node* ppnode parent-_parent;parent-_parent subR;if (_root parent){_root subR;subR-_parent nullptr;}else{if (parent ppnode-_left){ppnode-_left subR;}else{ppnode-_right subR;}subR-_parent ppnode;}}void RotateR(Node* parent){rotateSize;Node* subL parent-_left;Node* subLR subL-_right;parent-_left subLR;if (subLR)subLR-_parent parent;subL-_right parent;Node* ppnode parent-_parent;parent-_parent subL;if (parent _root){_root subL;subL-_parent nullptr;}else{if (parent ppnode-_left){ppnode-_left subL;}else{ppnode-_right subL;}subL-_parent ppnode;}} 无论怎么方式处理完都需要保证根是黑的最后加上
http://www.tj-hxxt.cn/news/221175.html

相关文章:

  • 如何将html发布到网站网站经营性备案需要什么资料
  • 冷饮网站开发背景意义秦皇岛城乡建设局
  • 宜昌网站开发网站建设服务合约
  • 永久免费网站虚拟主机wordpress用户头像插件
  • 公益网站建设郑州开发小程序平台
  • 服务器iis做网站杭州网站开发后端招
  • 汽车专业网站网站建设费用包括哪些
  • 请问婚庆网站建设该怎么做呢做选择的网站首页
  • 花生壳怎么建设购物网站教育网站制作公司
  • 网站开发简述100个最好的微信小程序
  • 襄阳谷城网站建设免费seo软件推荐
  • 淘宝内部卷怎么做网站商务邮箱注册
  • 做试卷的网站编程一小时网站
  • 西安外贸网站建设wordpress邮件发送类
  • 自己如何制作一个网页seo软件开发
  • 自己做网站需要多少资金wordpress菜单手机显示下拉
  • 怎么看网站用什么平台做的网页设计项目模板代码
  • 消防网站建设的风格项目立项流程
  • 网站建设公司排行百度怎样做网站
  • 访问自己做的网站中石化工建设宁波分公司网站
  • 沣东新城开发建设集团有限公司网站xampp如何安装wordpress
  • 如何攻击Wordpress站点嵊州网站
  • 宁夏住房城乡建设厅网站青柠影院免费观看电视剧高清
  • 门户网站建设报告wordpress 前台插件
  • 婚纱摄影手机网站模板win10怎么删除2345网址导航
  • 产品销售类网站 模板ppt模板免费素材
  • 高端建站和普通建站有哪些不同网站欣赏公司网站案例
  • 做一些购物网站如何通过网站后台修改网站
  • 福建省建设系统网站icp备案综合查询网站
  • 厦门网站制作公司如何申请营业执照