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

苏州网站建设官网自己开网店需要什么流程

苏州网站建设官网,自己开网店需要什么流程,外贸免费p2p网站建设,如何做旅游攻略网站平衡二叉树是一种二叉排序树#xff0c;其中每一个节点的左子树和右子树的高度至多等于1#xff0c;平衡二叉树又称为AVL树。 将二叉树节点的左子树深度减去右子树深度的值称为平衡因子BF#xff0c;平衡二叉树上所有节点的平衡因子只可能是-1,0或者1。 距离插入点最近的其中每一个节点的左子树和右子树的高度至多等于1平衡二叉树又称为AVL树。 将二叉树节点的左子树深度减去右子树深度的值称为平衡因子BF平衡二叉树上所有节点的平衡因子只可能是-1,0或者1。 距离插入点最近的且平衡因子的绝对值大于1的结点为根的子树我们称为最小不平衡子树。 平衡二叉树实现原理 先来看一个例子 对于数组a[10]{3,2,1,4,5,6,7,10,9,8}构建平衡二叉树。 按照二叉排序树的方式插入新的元素当插入1的时候使得当前二叉树失去平衡 当插入5的时候使得平衡二叉树再次失去平衡 插入6的时候同样产生不平衡 注意上面的这些不平衡都有一个共同的特点那就是最小不平衡子树的根的BF同它的孩子左孩子或者右孩子的BF是同号的。所以这是仅需要一次旋转就可以了。 当插入到数字9的时候同样的发生了不平衡 从上面的图可以看到一次的旋转是不能做到再次的平衡的。所以要两次旋转。 在插入8的时候同样的发生了不平衡同样的需要两次调整 所以总结上面的过程 当最小不平衡子树根节点的平衡因子BF是大于1的时候就右旋小于-1时就左旋。 插入节点后最小不平衡子树的BF与它的子树的BF符号相反时就需要对子树节点先进行一次旋转以使得符号相同后在反向旋转一次才能够完成平衡操作。 平衡二叉树算法实现 加入了平衡因子所以在每一个结点中增加一个数据域这个数据域表示以这个结点为根的二叉树的平衡因子。所以树结点的定义为 typedef struct BiTNode {int data;int bf;struct BiTNode *lchild, *rchild; }BiTNode, *BiTree;其实对于二叉平衡树的每一次的调整都可以分成两个步骤 调整各个结点的BF值旋转子树结构先写旋转子树结构代码 void R_Rotate(BiTree *T) {BiTree tmp;tmp (*T)-lchild;(*T)-lchild tmp-rchild;tmp-rchild (*T);*T tmp; }void L_Rotate(BiTree *T) {BiTree tmp;tmp (*T)-rchild;(*T)-rchild tmp-lchild;tmp-lchild (*T);*T tmp; }所以当插入一个新的结点导致树结构不平衡的时候当树右边超重的时候要右平衡树主体左旋转 //右平衡右子树超重 void RightBalance(BiTree *T) {BiTree tmp, tmpr;tmp (*T)-rchild;switch (tmp-bf){case -1:(*T)-bf 0;tmp-bf 0;L_Rotate(T);break;case 1:tmpr tmp-lchild;switch (tmpr-bf){case 1:tmp-bf -1;(*T)-bf 0;break;case -1:tmp-bf 0;(*T)-bf 1;break;case 0:tmp-bf (*T)-bf 0;}tmpr-bf 0;//R_Rotate(tmp);是错误的因为不能修改上一级的指针R_Rotate((*T)-rchild);L_Rotate(T);} } 当插入一个结点导致树结构不平衡的时候左子树超重要左平衡树主体右旋转 //左平衡左子树超重 void LeftBlance(BiTree *T) {BiTree tmp,tmpr;tmp (*T)-lchild;switch (tmp-bf){case 1:(*T)-bf 0;tmp-bf 0;R_Rotate(T);break;case -1:tmpr tmp-rchild;switch (tmpr-bf){case 1:tmp-bf 0;(*T)-bf -1;break;case -1:tmp-bf 1;(*T)-bf 0;break;case 0:(*T)-bf 0;tmp-bf 0;break;}//switchtmpr-bf 0;//L_Rotate(tmp);是错误的因为不能修改上一级的指针L_Rotate((*T)-lchild);R_Rotate(T);} }注意上面两处的双旋转的时候不能旋转tmp因为这样不能把父结点的指针修改所以要旋转父结点指下来得指针。  最后插入操作的主函数 bool InsertAVL(BiTree *T, int key, bool *taller) {if (*T NULL){*T (BiTree)malloc(sizeof(BiTNode));(*T)-data key;(*T)-lchild (*T)-rchild NULL;(*T)-bf 0;*taller true;return true;}if((*T)-data key){*taller false;return false;}else if((*T)-data key){if(!InsertAVL((*T)-lchild, key, taller))return false;if(*taller){switch ((*T)-bf){case 1:LeftBlance(T);*taller false;break;case 0:(*T)-bf 1;*taller true;break;case -1:(*T)-bf 0;*taller false;break;}//switch}//if}//else ifelse //(*T)-data key{if (!InsertAVL((*T)-rchild, key, taller))return false;if(*taller){switch ((*T)-bf){case 1:(*T)-bf 0;*taller false;break;case 0:(*T)-bf -1;*taller true;break;case -1:RightBalance(T);*taller false;}//switch}//if}//elsereturn true; }转载于:https://www.cnblogs.com/stemon/p/4839019.html
http://www.sadfv.cn/news/276866/

相关文章:

  • 中国工程建设管理协会网站厦门软件开发工资一般多少
  • 宁津县建设局网站优化网站界面的工具
  • 建设通网站官网登录商业网站排名
  • 海口网站运营托管咨询wordpress目录
  • 高端品牌网站建设哪家好王烨雄
  • 成都自适应建站哪家好太原免费网络推广哪里朿
  • 泰安北京网站建设wordpress php环境
  • 链接分析属于网站开发天津工程建设信息网官网
  • iis7网站绑定域名哪家公司做seo
  • 上海建设资质审批网站龙华民治网站建设
  • p2p网站开发公司济南建设信息网官网
  • 东莞网站优化服务公司文件大小 wordpress
  • 摄影网站开题报告长沙微信小程序公司
  • 安徽建设厅网站首页中美贸易最新动态
  • 深圳建立网站营销外网视频网站做泥声控
  • 网站册数文章导入wordpress
  • 网站建设 提成多少免费软件下载官方网站
  • 上海网站建设小程序给网站做绝对路径
  • 常州网站制作公司wordpress 双语
  • 全球购物网站排名唐山制作网站公司
  • 为校园网站建设提供做电脑端网站手机端能搜到吗
  • 网站建设提高信息惠州做网站建设价格
  • 佛山网站建设佛山网络推广wordpress 流量管理系统
  • pc 手机自适应网站用什么做wordpress一键采集
  • 哪个网站可以做代练wordpress站点是什么意思
  • 鄂州第一官方网站怎样做网站分流赚钱
  • 南山住房和建设局网站官网网站建设到运营需要多少钱
  • 网站阿里云备案要多久网站托管服务商
  • 公司建设网站费用会计分录wordpress主题多页面
  • 广州市网站制作网站建设上海网站建设