电子商务网站运营前的诊断与优化准备步骤有哪些?

摘要:网站诊断与优化的作用,电子商务网站的运营一般需要做哪些准备,昆明市环保局建设网站,wordpress更换文章背景色红黑树讲解和实现1 红黑树介绍1.1 红黑树特性1.2 红黑树的插入1.3 红黑树的删除2 完整代码实现2.1 rtbtree
网站诊断与优化的作用,电子商务网站的运营一般需要做哪些准备,昆明市环保局建设网站,wordpress更换文章背景色红黑树讲解和实现1 红黑树介绍1.1 红黑树特性1.2 红黑树的插入1.3 红黑树的删除2 完整代码实现2.1 rtbtree.h头文件2.2 main.c源文件1 红黑树介绍 红黑树( Red-Black tree#xff0c;简称RB树)是一种自平衡二叉查找树#xff0c;是计算机科学中常见的一种数据结构#xff0c… 红黑树讲解和实现1 红黑树介绍1.1 红黑树特性1.2 红黑树的插入1.3 红黑树的删除2 完整代码实现2.1 rtbtree.h头文件2.2 main.c源文件1 红黑树介绍 红黑树( Red-Black tree简称RB树)是一种自平衡二叉查找树是计算机科学中常见的一种数据结构其典型用途是实现关联数组。红黑树的结构复杂但其操作有着良好的最坏情况运行时间且在实践中有着较高的效率:它可以在O(log2n)时间内完成查找、插入和删除操作其中的n是树中结点的数量。   红黑树(RB树)是二叉树中重要的知识点因为在操作系统的内核中、C的STL和Java的数据结构中都大量使用了红黑树红黑树的增删查改的复杂度均为log2n。 1.1 红黑树特性 红黑树是每个结点都带有颜色属性的二叉查找树颜色为红色或黑色给结点进行染色的原因是用颜色和红黑树性质对树进行平衡使得红黑树的任意一条路径长度都不可能超过其他路径的两倍。在二叉查找树的–般要求以外对于任何有效的红黑树我们额外增加了如下性质 结点是红色的或黑色的。根是黑色的。所有叶子结点都是黑色的(叶子是NIL结点)。每个红色结点必须有两个黑色的子结点(从每个叶子到根的所有路径上不能有两个连续的红色结点)。从任意一个点到其每个叶子的所有简单路径都包含相同数量的黑色结点。 王道408考研的咸鱼学长总结了一个口诀左根右、根叶黑、不红红、黑路同。 1.2 红黑树的插入 红黑树的插入结点首先标记为红色按照二叉排序树的方式插入后再做调整。红黑树的插入分为5种情况。 **情形一**新结点N是树根没有子节点。这种空树的情况直接将新结点作为根插入染成黑色即可。具体代码如下 void insert_case1(node *n) {if(n-parent NULL)//如果新插入结点没有父结点即此结点为根结点n-color BLACK;//直接染黑else insert_case2(n);//否则转入情形2即有父结点的情况 }**情形二**父结点为黑色则直接将新结点插入满足性质四不红红即没有两个连续红色。还满足性质5不会增减该路径上黑色结点的数量。具体代码如下 void insert_case2(node *n) {if(n-parent-color BLACK) //如果父结点为黑色则直接插入return; //不需要调整else insert_case3(n); //如果父结点为红色则需要调整 }**情形三**如果父结点和叔结点都是红色的那么我们可以将父结点和叔结点都染黑保证不红红性质4然后将爷结点染红插入的子结点仍然是红色满足路黑同性质5。此时需要考虑爷结点是否为根结点如果爷结点为根结点则需要将爷结点染黑保证性质不变如果爷结点不为根结点则向上将爷结点红作为其父结点的新插入结点递归情形一。下面给出图示和实现代码 void insert_case3(node *n) {if(uncle(n)!NULL uncle(n)-color RED n-parent-color RED){//这里父结点颜色可以不考虑否则违反黑路同性质5为了和算法描述一致也加入判断n-parent-color BLACK;//将父结点染黑uncle(n)-color BLACK;//将叔结点染黑grandparent(n)-color RED;//将爷结点染红insert_case1(grandparent(n));//将红色的爷结点作为新结点对上级进行调整}else insert_case4(n);//不满足情形3则考虑情形4 }**情形四**父结点是红色叔结点是黑色或者缺少的情况并且新结点是父结点的右子节点而父结点又是爷结点的左子节点。这种情况需要左旋调换新结点和父结点。
阅读全文