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

智谋网站优化公司招应届培训网页设计

智谋网站优化公司,招应届培训网页设计,推销一个产品的方案,中国五大门户网站avl树中insert的模拟实现 avl树特点#xff1a; 1.是搜索二叉树 2.每个结点的左右子树高度差的绝对值不超过2 inser模拟实现#xff1a; // 右单旋void RotateR(Node* pParent){Node* parent pParent;Node* pr parent-_pRight;Node* prl pr-_pLeft;//记录父节点…avl树中insert的模拟实现 avl树特点 1.是搜索二叉树 2.每个结点的左右子树高度差的绝对值不超过2 inser模拟实现 // 右单旋void RotateR(Node* pParent){Node* parent pParent;Node* pr parent-_pRight;Node* prl pr-_pLeft;//记录父节点Node* pp parent-_pParent;//更新指针parent-_pRight prl;if(prl)//判断prl是否存在prl-_pParent parent;pr-_pLeft parent;parent-_pParent pr;if (pp nullptr){//若parent是根节点_pRoot pr;pr-_pParent nullptr;}else{ //父节点连接if (pp-_data parent-_data){pp-_pRight pr;pr-_pParent pp;}else{pp-_pLeft pr;pr-_pParent pp;}}//更新平衡因子parent-_bf 0;pr-_bf 0;}// 左单旋void RotateL(Node* pParent){Node* parent pParent;Node* pl parent-_pLeft;Node* plr pl-_pRight;//记录父节点Node* pp parent-_pParent;//更新指针parent-_pLeft plr;if (plr)//判断prl是否存在plr-_pParent parent;pl-_pRight parent;parent-_pParent pl;if (pp nullptr){//若parent是根节点_pRoot pl;pl-_pParent nullptr;}else{ //父节点连接if (pp-_data parent-_data){pp-_pRight pl;pl-_pParent pp;}else{pp-_pLeft pl;pl-_pParent pp;}}//更新平衡因子parent-_bf 0;pl-_bf 0;}// 右左双旋void RotateRL(Node* pParent){ Node* parent pParent;Node* pr parent-_pRight;Node* prl pr-_pLeft;int bf prl-_bf;RotateL(pParent-_pRight);RotateR(pParent);//更新平衡因子if (bf 0){parent-_bf pr-_bf prl-_bf 0;}else{parent-_bf -1;pr-_bf prl-_bf 0;}}// 左右双旋void RotateLR(Node* pParent){Node* parent pParent;Node* pl parent-_pLeft;Node* plr pl-_pRight;int bf plr-_bf;RotateR(pParent-_pLeft);RotateL(pParent);//更新平衡因子if (bf 0){parent-_bf pl-_bf plr-_bf 0;}else{parent-_bf 0;pl-_bf 1;plr-_bf 0;}}// 在AVL树中插入值为data的节点bool Insert(const T data){if (_pRoot nullptr){_pRoot new Node(data);return true;}Node* cur _pRoot;Node* parent nullptr;//查看插入位置while (cur){if (cur-_data data){ parent cur;cur cur-_pRight;}else if (cur-_data data){ parent cur;cur cur-_pLeft;}else{//有重复值插入失败return false;}}//此时parent的子树就是存放data的结点if (parent-_data data){cur new Node(data);parent-_pRight cur;cur-_pParent parent;parent-_bf;}else{cur new Node(data);parent-_pLeft cur;cur-_pParent parent;parent-_bf--;}//开始旋转while (parent){if (parent-_bf 0){//代表插入前后高度不变break;}else if (parent-_bf 1 || parent-_bf -1){//插入后高度改变但仍保持平衡条件cur parent;parent parent-_pParent;if (parent nullptr){break;}if (cur parent-_pLeft){parent-_bf--;}else{parent-_bf;}}else if (parent-_bf 2 || parent-_bf -2){//此时不满足平衡条件需要旋转//旋转分四种情况//1.右右if(parent-_bf2cur-_bf1)RotateR(parent);//2。左左else if(parent-_bf -2 cur-_bf -1)RotateL(parent);//3.右左else if(parent-_bf 2 cur-_bf -1)RotateRL(parent);//4.左右else if(parent-_bf -2 cur-_bf 1)RotateLR(parent);//旋转后高度和插入前高度相同因此结束break;}else{//此时平衡因子异常发出中断请求assert(false);}}} 对于一个结点的插入其影响其父节点的平衡因子_bf的值因此每次插入都需要修改其父节点的平衡因子而父节点的平衡因子的修改又可能会影响父节点的父节点的平衡因子的值因此可能会出现连锁修改的情况。以下是所有可能的情况 1.插入结点后父节点的平衡因子的值变为0在该情况下父节点的高度在插入前后未发生改变因此不会继续影响父节点的父节点因此可以直接退出循环。 2.插入结点后父节点的平衡因子的值变为1或-1在该情况下父节点的高度插入前后发生修改增加1此处通过判断父节点是其父节点的左右子树来影响父节点的父节点的平衡因子并继续进入循环进行判断。 3。插入后父节点平衡因子变成大于2的情况此时抛出异常因为父节点的平衡因子应符合不超过2即使在插入新节点后其平衡因子最大只能增加1最小只能减小1因此只能变成绝对值小于等于2的情况不应该出现绝对值大于2的情况。 3.插入结点后父节点平衡因子变成2或-2此时不在符合平衡因子绝对值不超过2的情况因此需要对以父节点为根结点的子树进行旋转修改。此时又分成四种情况。 情况1 对于这种情况只需要进行一次选择即可旋转后的结果如下图 具体实现逻辑就是parent变成其右孩子的左孩子原本右孩子的左孩子变成parent的右孩子 经过旋转使得当前的二叉树仍是avl树其旋转后的高度与插入结点之前的高度一致因此不需要继续向上修改父节点。 情况2 此时若只以A为根进行旋转则旋转后仍有平衡因子为2或-2的情况因此需要进行两次旋转。为方便理解上图等价于下图以下图来分析。 具体思路先以b为根进行旋转使得旋转后高度更高的结点在右侧。 然后以A为根进行旋转即可。 经过两次旋转实现了高度缩减一且和插入结点之前相比子树的父节点的平衡因子不用改变因此也不需要继续进入循环。 对于上述两种情况存在镜像的情况对于那两种情况只需要与对应的将左右旋转、子树旋转等改变即可。
http://www.zqtcl.cn/news/517284/

相关文章:

  • 个人做的网站有什么危险网站模板怎样发布
  • 设计建设网站公司网站wordpress k2
  • 公司网站被抄袭网络宣传
  • 企业网站设计收费专业网络推广公司排名
  • 视频网站模板源码深圳网站建设明细报价表
  • nike官方网站定制二级域名网站有哪些
  • 越秀移动网站建设房门户网站如何做优化
  • 什么软件可以做动漫视频网站开发一个小程序大概要多少钱
  • 微网站可以做成域名访问株洲网站做的好的公司
  • 建设网站去工信部备案需要什么资料网站建设相关博客
  • 十度网站建设网站建立的企业
  • 婚庆公司网站国外网站阻止国内访问怎么做
  • 乐山高端网站建设wordpress openload
  • 哪些网站上可以做租车深圳品牌网站开发
  • 乐清网站改版公司西安网站建设公司哪家好
  • 国外小型网站1688货源网下载
  • 浏览量最大的网站网站导航栏目设计内容依据
  • 户外拓展公司网站开发桂林网站开发
  • 怎么入侵网站后台互联网营销师含金量
  • 网站建设ningqueseo济南网站建设服务
  • 做网站给女朋友品牌网站建设只询大蝌蚪
  • 厦门服装商城网站建设米课做网站
  • ui做网站实例一起做网店网站官方
  • 网站建设合同怎么写wordpress如何设置404页面
  • wordpress 安装过程顺德网站优化
  • 大麦网网站建设的功能定位wordpress图片不被收录
  • 做推广任务的网站渠道营销推广方案
  • 消防中队网站建设施工企业项目经理部管理人员对外行为的法律后果
  • 淘宝的网站建设情况仪器网站模板
  • 网站开发需要掌握的知识什么软件是做网站模板的