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

建站优化信息推广软件开发公司排名国内

建站优化信息推广,软件开发公司排名国内,苏州和城乡建设局网站首页,研发和开发的区别题目要求#xff1a; AVL 树是一种自平衡的二叉搜索树。在 AVL 树中#xff0c;任何节点的两个子子树的高度最多相差一;如果在任何时候它们相差不止一#xff0c;则进行重新平衡以恢复此属性。图 1-4 说明了旋转规则。 图1 图2 图3 图4 现在给定一系列插入#xff0c;您应该… 题目要求 AVL 树是一种自平衡的二叉搜索树。在 AVL 树中任何节点的两个子子树的高度最多相差一;如果在任何时候它们相差不止一则进行重新平衡以恢复此属性。图 1-4 说明了旋转规则。 图1 图2 图3 图4 现在给定一系列插入您应该分辨生成的 AVL 树的根。 输入规格  每个输入文件都包含一个测试用例。对于每种情况第一行都包含一个正整数N(20)这是要插入的键的总数。然后N不同的整数键在下一行中给出。一行中的所有数字都用空格分隔。 输出规格  对于每个测试用例将生成的 AVL 树的根打印在一行中。 示例输入 1  5 88 70 61 96 120 示例输出 1 70 题解  思路如注释所示可通过所有测试点。 #includebits/stdc.h using namespace std; typedef struct AVLNode *Position; typedef Position AVLTree; typedef int ElementType; struct AVLNode{ElementType Data;AVLTree Left;AVLTree Right;int Hight; }; int Max(int a,int b){return a b ? a:b; }int GetHight(AVLTree A) {return A NULL ? -1 : A-Hight; }AVLTree SingleLeftRotation(AVLTree A){AVLTree B A-Left;A-Left B-Right;B-Right A;A-Hight Max( GetHight(A-Left), GetHight(A-Right) ) 1;B-Hight Max( GetHight(B-Left), A-Hight ) 1;return B; }AVLTree SingleRightRotation(AVLTree A){AVLTree B A-Right;A-Right B-Left;B-Left A;A-Hight Max( GetHight(A-Left), GetHight(A-Right) ) 1;B-Hight Max( GetHight(B-Right), A-Hight ) 1;return B; }AVLTree DoubleLeftRightRotation(AVLTree A){/* 注意A必须有一个左子结点B且B必须有一个右子结点C *//* 将A、B与C做两次单旋返回新的根结点C *//* 将B与C做右单旋C被返回 */A-Left SingleRightRotation(A-Left);/* 将A与C做左单旋C被返回 */return SingleLeftRotation(A); }AVLTree DoubleRightLeftRotation(AVLTree A){A-Right SingleLeftRotation(A-Right);return SingleRightRotation(A); }AVLTree Insert(AVLTree T,ElementType X){if(!T){ //若插入空树。则新建一个结点 T (AVLTree)malloc(sizeof(struct AVLNode));T-Data X;T-Hight 0;T-Left NULL;T-Right NULL;} else if(X T-Data){ //插入左树 T-Left Insert(T-Left,X);if(GetHight(T-Left)-GetHight(T-Right) 2){ //出现不平衡 if(X T-Left-Data)T SingleLeftRotation(T); //插入在左树的左边-单左旋elseT DoubleLeftRightRotation(T); //插入再左树的右边-左右双旋 }}else if(X T-Data){ //插入右树T-Right Insert(T-Right,X);if(GetHight(T-Right)-GetHight(T-Left) 2){ //出现不平衡 if(X T-Right-Data)T SingleRightRotation(T); //单右旋 elseT DoubleRightLeftRotation(T); //右左旋 }} else return T;T-Hight Max(GetHight(T-Left),GetHight(T-Right))1;return T; }int main(){AVLTree T NULL;int t;cint;while(t--){int num;cinnum;T Insert(T,num);}coutT-Data; } 此题有以下几个要注意的点 1.Hight是指把 一个给定结点作为根节点时其代表的树的树高这样当左右子树树高差大于等于2时可以发现平衡树失衡。 2.树高取左右子树的最大值。 3.左右双旋的时候在代码层面实际是先右单旋再左单旋右左单旋时同理。 这里感觉何老师的ppt很清晰引一下侵删重点是找到“麻烦结点”对“不平衡发现者”是怎样破环的
http://www.hkea.cn/news/14434144/

相关文章:

  • 金华网站建设团队网站开发教程免费
  • 网站界面设计形考任务打鱼在线游戏网站建设
  • 临海最火自适应网站建设模仿wordpress主题
  • 邗江区网站建设套餐成都网站建设方案外包
  • 专业建站分销商城竞价网站做推广方案
  • 余杭门户网站下列哪个不属于网页制作工具
  • 网站后台如何更改it学校哪个比较好
  • 网站建设费能算作广告费用吗成都做公众号推广的公司
  • 网站设计公司电话godaddy上传网站
  • 代做网站名称优化网站开发报价单 excel
  • 知乎网站建设西安网页设计招聘信息
  • 平江外贸网站推广找哪家制作手机app需要学什么
  • 网站外链要怎么做网站标题在线制作
  • 小说阅读网站怎么建设高端品牌网站建设建议
  • 深圳做营销网站制作网站开发种类
  • 网站建设中html代码昆明企业自助建站
  • 自己建的网站打不开怎么改网站模块
  • 网站开发需要客户做什么成都网站制作定制
  • 镇江网站外包推广网站是什么意思
  • wordpress制作大型网站打不开wordpress
  • 吉林市网站建设公司破解wordpress加密文章
  • 山东跨境电商建站公司wordpress 付费主题
  • 太仓有专门做网站的地方吗视频制作软件手机版
  • 基于oa系统的网站建设阿里云虚拟主机免费版
  • 任经理 徐州网站建设安装百度
  • 企业公司网站源码澄江网站制作
  • phpcms v9怎么做网站百度浏览器官网
  • 中国建设银行总行官方网站网站建设淮南
  • 易烊千玺个人网站辽宁省建设厅投诉网站
  • 如何制作个人网页链接长沙正规竞价优化服务