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

文明校园建设专题网站沂水网站建设

文明校园建设专题网站,沂水网站建设,网站留言系统 提交没反应,做网站的注意什么文章目录1. 使用场景2. 性质3. 结点定义4. 结点旋转5. 结点插入1. 使用场景 Linux进程调度CFSNginx Timer事件管理Epoll事件块的管理 2. 性质 每一个节点是红色或者黑色根节点一定是黑色每个叶子节点是黑色如果一个节点是红色#xff0c;那么它的两个儿子节点都是黑色从任意… 文章目录1. 使用场景2. 性质3. 结点定义4. 结点旋转5. 结点插入1. 使用场景 Linux进程调度CFSNginx Timer事件管理Epoll事件块的管理 2. 性质 每一个节点是红色或者黑色根节点一定是黑色每个叶子节点是黑色如果一个节点是红色那么它的两个儿子节点都是黑色从任意一个节点到其每个叶子节点的所有路径都包含相同数目的黑色节点 3. 结点定义 typedef int KEY_TYPE;typedef struct _rbtree_node {unsigned char color;struct _rbtree_node *left;struct _rbtree_node *right;struct _rbtree_node *parent;KEY_TYPE key;void *value; }rbtree_node;4. 结点旋转 左旋实现 void _left_rotate(rbtree *T, rbtree_node *x) {rbtree_node *y x-right;x-right y-left;if (y-left ! T-nil){y-left-parent x;}y-parent x-parent;if (x-parent T-nil){T-root y;}else if (x x-parent-left){x-parent-left y;}else if (x x-parent-right){x-parent-right y;}y-left x;x-parent y; }右旋实现 void _right_rotate(rbtree *T, rbtree_node *y) {rbtree_node *x y-left;y-left x-right;if (x-right ! T-nil){x-right-parent y;}x-parent y-parent;if (y-parent T-nil){T-root x;}else if (y y-parent-left){y-parent-left x;}else if (y y-parent-right){y-parent-right x;}x-right y;y-parent x; }5. 结点插入 将新节点的颜色设为红色然后按照二叉查找树的规则插入到合适的位置 如果设置成黑色的话则必定会违反上述五条性质中的第五条 如果新节点是根节点那么将其颜色改为黑色结束 如果新节点的父节点是黑色那么不需要做任何调整结束 如果新节点的父节点和叔叔节点父节点的兄弟节点都是红色那么将它们的颜色改为黑色将祖父节点父节点的父节点的颜色改为红色然后把祖父节点作为新的当前节点重复步骤2和3 如果新节点的父节点是红色但叔叔节点是黑色或不存在那么分四种情况进行旋转和变色操作 新节点是父节点的左子节点且父节点是祖父节点的左子节点左左情况那么对祖父节点进行右旋并交换祖父和父亲的颜色新节点是父节点的右子节点且父节点是祖父节点的左子节点左右情况那么对父亲节点进行左旋并交换新节点和父亲节点的颜色然后把新节点作为当前节点转化为左左情况处理新节点是父亲节点的右子节点且父亲节点是祖父节点的右子节点右右情况那么对祖父节点进行左旋并交换祖父和父亲的颜色新节点是父亲节点的左子节点且父亲节点是祖父节点的右子节点右左情况那么对父亲节点进行右旋并交换新节点和父亲节点的颜色然后把新节点作为当前节点转化为右右情况处理 int key_compare(KEY_TYPE *a, KEY_TYPE *b) {//TODO }void rbtree_insert_fixup(rbtree *T, rbtree_node *z) {while (z-parent-color RED){if (z-parent z-parent-parent-left){rbtree_node *y z-parent-parent-right;if (y-color RED){z-parent-color BLACK;y-color BLACK;z-parent-parent-color RED;z z-parent-parent;}else{if (z z-parent-right){z z-parent;_left_rotate(T, z);}z-parent-color BLACK;z-parent-parent-color RED;_right_rotate(T, z-parent-parent);}}}T-root-color BLACK; }void rbtree_insert(rbtree *T, rbtree_node *z) {rbtree_node *x T-root;rbtree_node *y T-nil;while (x ! T-nil){y x;// 如果是自定义类型可以实现key_compare接口来进行比较if (x-key z-key){x x-right;}else if (x-key z-key){x x-left;}else{return;}}z-parent y;if (y T-nil){T-root z;}else if (z-key y-key){y-right z;}else{y-left z;}z-left T-nil;z-right T-nil;z-color RED;rbtree_insert_fixup(T, z); }
http://www.dnsts.com.cn/news/275479.html

相关文章:

  • 微网站网站模板建站网站制作现在赚钱么
  • 外贸网站优化排名自己建一个网站需要准备什么
  • 外贸网站风格网站后台如何管理
  • 制作网站公司 可以要求后续修改吗推广计划和推广单元
  • 网站怎么做跳出提示筐用vs2010做免费网站模板下载
  • 宁夏建设银行官方网站坪地网站建设信息
  • 长春市防疫最新规定seo导航
  • 男女做羞羞羞的网站工 投标做哪个网站好
  • 怎样给网站做外链网站排名关键词
  • 做网站猫腻大吗建设行业信息和技术应用服务网站
  • 网站建栏目建那些榆林医疗网站建设
  • 有做酒席酒水网站吗12306网站多少钱做的
  • 高校网站建设资料库360推广登陆
  • 深圳网站建设好不好新余集团网站建设
  • 网站自适应手机转码成都私人放款联系方式电话
  • 网站排名软件利搜天津众业建设工程有限公司网站
  • 个人博客网站设计代码做网站的网址
  • dede 网站图标网站为什么做重定向
  • 如何做公司网站建设如何免费建立一个网站
  • 淘宝客api网站架设教程公需道德与能力建设培训网站
  • 在线网站流量查询wordpress播放插件
  • 做电信宽带合适做网站吗建设网站cms
  • 为什么网站浏览不是做的那样wordpress网站导入数据库
  • 定制网站设计wordpress调用个人中心
  • 南通网站建设报价网站如何防止重登录
  • 怎样建立销售网站做网站记什么科目
  • 做阿里巴巴网站图片大全自己开发一个app
  • 金融公司网站 html帝国网站管理系统前台
  • 网站建设运营预算浙江新东阳建设集团有限公司网站
  • 网站建设学习记事本做网站怎么插图