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

网店网站技术方案seo交互论坛

网店网站技术方案,seo交互论坛,四川seo推广,推广公司服务内容目录 1.红黑树概念 2.红黑树性质 3.调整 1.如果p和u都是红色#xff0c;将其都改为黑色即可,然后向上调整 2.如果p红#xff08;u黑/u不在#xff09;#xff0c;这时候左子树两红#xff0c;于是给右子树一个红#xff08;旋转变色#xff09; 2.1右单旋 变色- …目录 1.红黑树概念 2.红黑树性质 3.调整 1.如果p和u都是红色将其都改为黑色即可,然后向上调整 2.如果p红u黑/u不在这时候左子树两红于是给右子树一个红旋转变色 2.1右单旋 变色- p变黑, g变红, 达到给右子树一个红节点的效果, 并保持每条路径上黑色节点的个数相同 2.2左右双旋转 变色 2.3左单旋 变色 2.4右左双选 变色 4.红黑树的简单实现 4.1红黑树的定义 4.2相关功能 插入 检查 获取最左/右侧的节点 检查树种是否存在data节点 4.3默认成员函数 测试用例: 1.插入 2.检查 3.获取最左/右侧节点 4.在树种查找节点 1.红黑树概念 红黑树是一种二叉搜索树但在每个结点上增加一个存储位表示结点的颜色可以是Red或Black。 通过对任何一条从根到叶子的路径上各个结点着色方式的限制红黑树确保没有一条路径会比其他路径长出俩倍因而是接近平衡的 2.红黑树性质 每个结点不是红色就是黑色根节点是黑色的如果一个节点是红色的则它的两个孩子结点是黑色的对于每个结点从该结点到其所有后代叶结点的简单路径上均包含相同数目的黑色结点每个叶子结点都是黑色的(此处的叶子结点指的是空结点) 最短路径: 全黑 最长路径: 一黑一红交替 红黑树就能保证其最长路径中节点个数不会超过最短路径节点个数的两倍 红黑树优势: 旋转次数更少 新插入的节点默认是红色 --1.如果是黑色, 一定违反了规则4 会影响所有路径 --2.如果是红色, 当插入到红色节点后面,违反规则3 , 当插入到黑色节点的后面,不违反规则 3.调整 什么时候需要修改红黑树?--当插入到红色节点后面的时候 1.如果p和u都是红色将其都改为黑色即可,然后向上调整 -然后将g改为红g原来为黑我们已经把p,u改为黑了会多一个黑节点违反规则4需要把g改为红-当然改为红后g的p可能也是红继续往上调整即可把cur  g,如果最后调到根,要将根变黑 2.如果p红u黑/u不在这时候左子树两红于是给右子树一个红旋转变色 -这种情况讨论cur的插入位置 来决定其需要怎么旋转单旋双旋 --p是g的左 ,且插入的节点在左子树 2.1右单旋 变色 - p变黑, g变红, 达到给右子树一个红节点的效果, 并保持每条路径上黑色节点的个数相同 2.2左右双旋转 变色 --p是g的右, 且插入的节点在右子树 2.3左单旋 变色 2.4右左双选 变色 4.红黑树的简单实现 4.1红黑树的定义 节点 RBTree 4.2相关功能 插入 1.找到节点的位置 2.链接节点 3.判断此时p是不是红色, 且存在 (默认插入的节点是红色), 是的话就需要调整   --p,u存在且都为红 直接将p,u变为黑色,g变红色, 然后向上调整,   如果调到根(要将其变黑)   --p红, u红/u不在    对插入节点位置进行讨论 1.p是g的左, cur是 p的左  g右单旋 2.p是g的左, cur是p的右     p左旋, g右旋 3.p是g的右, cur是p的右     g左单旋 4.p是g的右, cur是p的左     p右旋,g左旋 代码: 1.找到节点的位置 2.链接节点 ​​​​​​​​​​​​​​ 3.判断此时p是不是红色, 且存在 (默认插入的节点是红色), 是的话就需要调整 效果: 检查 判断根节点是黑色的(规则2)判断有无连续的红色节点(规则3)判断每条路径上的黑色节点个数是否相等(规则4)                                                             --这里随便选取一条路径的黑色节点数作为基准值, 用来和对比其它路径黑节点的个数 代码: //红黑树的检查bool Is_RBTree() {return _Is_RBTree(_root);}//红黑树的检查bool _Is_RBTree(Node* root){//规则2:根节点是黑色的if (root nullptr) return true; if (root-_color ! BLACK) return false;//规则3:不能有连续的红色节点//规则4:每条路径上的黑色节点个数相等Node* cur root; int base_nums 0;while (cur) {if (cur-_color BLACK) base_nums;cur cur-_left;}Check(root,base_nums,0);}bool Check(Node* root,int base_nums,int block_nums) {if (root nullptr) {if (base_nums ! block_nums) return false;return true;}//检查有没有连续的红色节点if (root-_parent root-_color RED root-_parent-_color RED)return false;//遇到一个黑色节点就if (root-_color BLACK) block_nums;return Check(root-_left,base_nums,block_nums) Check(root-_right,base_nums,block_nums);} 获取最左/右侧的节点 //获取红黑树最左侧节点Node* LeftMost(){Node* cur _root;//空树if (cur nullptr) return nullptr;while (cur-_left){cur cur-_left;}return cur;}//获取红黑树最右侧节点Node* RightMost(){Node* cur _root;//空树if (cur nullptr) return nullptr;while (cur-_right){cur cur-_right;}return cur;} 检查树种是否存在data节点 //检测红黑树中是否存在值为data的节点Node* Find(const T data){Node* cur _root;while (cur){if (cur-_data data)cur cur-_left;else if (cur-_data data)cur cur-_right;else return cur;}return nullptr;} 4.3默认成员函数 --构造函数 这里传了缺省值(可不写) --拷贝构造 思路:使用前序遍历, 构造红黑树 --赋值运算符 思路: 交换_root --析构函数 后序遍历,删除节点 测试用例: 1.插入 2.检查 正常情况: 异常: 屏蔽掉颜色的调整 修改默认生成黑色节点 3.获取最左/右侧节点 4.在树种查找节点 代码:RB-Tree/RB-Tree · 朱垚/数据结构练习 - 码云 - 开源中国 (gitee.com)
http://www.w-s-a.com/news/59597/

相关文章:

  • 手工业网站怎么做成都酒吧设计公司
  • .net 网站生成安装文件目录重庆网站建设沛宣网络
  • 怎么做钓鱼网站吗百度免费域名注册网站
  • 如何给网站做外部优化今年国内重大新闻
  • 有没有做生物科技相关的网站弄一个app大概多少钱
  • 五金加工东莞网站建设怎么做网页跳转
  • 淄博网站优化价格wordpress没有小工具
  • 自己搭建服务器做视频网站wordpress发布文章 发布
  • php仿博客园网站阅读分享网站模板
  • 网站宣传的劣势域名注册长沙有限公司
  • 怎样联系自己建设网站企业怎样做好网站建设
  • 网站制作需求分析电商网站建设浩森宇特
  • 淄博网站建设招聘摄影网站建设的论文
  • 怎么把凡科网里做的网站保存成文件网站建设研究的意义
  • 服务器2003怎么做网站网站建设服务器的配置
  • 高校网站建设方案网站推广软件下载安装免费
  • 重庆没建网站的企业网站开发软件 连接SQL数据库
  • 百度申诉网站沉默是金
  • 如何自己建网站wordpress图片延时加载
  • 甘肃省住房和城乡建设厅注册中心网站千博企业网站管理系统2013
  • 西餐厅网站模板seo搜索引擎优化ppt
  • 什么做的网站吗wordpress注册可见插件
  • 献县做网站价格可以提升自己的网站
  • 如何修改网站title建设网站只能是公司
  • 网站推广效果怎么样建设工程公司组织架构图
  • 成都制作网站价格表网站安全证书过期怎么办
  • 高校图书馆网站的建设方案湖南常德市
  • 房地产怎么做网站推广wordpress插件汉化下载
  • 一般pr做视频过程那个网站有无锡网络公司平台
  • 安徽网站推广系统网站根目录权限设置