网站大量收购独家精品文档,联系QQ:2885784924

26二叉平衡树.ppt

  1. 1、本文档共41页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
26二叉平衡树

练习 营业额统计(sum.c/sum.in/sum.out) 问题描述:一个公司需要统计自公司成立以来的营业情况。营业情况是这样统计的:由于在不同时候,公司的营业额会出现一些波动,当波动很大时,公司的经营状况就出现了问题。因此,经济管理学商定义了一种最小波动值来衡量这种情况: 当天的最小波动值=min{|当天的营业额-以前某一天的营业额|} 其中 第一天的最小波动值=第一天的营业额 你的任务就是,对公司成立以来n(n=32767)天的营业额aj(aj=1000000)进行分析,把每天的最小波动值加起来 样例输入: 4 12 13 11 10 样例输出: 15 程序讲解-右旋转 void R-Rotate(BSTree p){ lc = p-lchild p-lchild = lc-rchild; lc-rchild = p; p = lc; } A B X 2 p lc A B p 1 AR h-1 BL AR 1、A左子树重(bf=1) 2、插入的结点在左子树的左子树中,bfA=2, bfB=1 BR BR X BL 0 0 3、调整前后树的高度均为h+1 程序讲解-左旋转 void L-Rotate(BSTree p){ rc = p-rchild p-rchild = rc-lchild; rc-lchild = p; p = rc; } A B -2 A B X p rc p AL BL BR h-1 -1 X BR BL AL 0 0 程序讲解-主程序 Status InsertVAL(BSTree T, ElemType e, Boolean taller){ if(!T){//空树 T = (BSTree) malloc(sizeof(BSTNode)); if(!T) exit(1); T-data =e;T-lchild=T-rchild=NULL; T-bf=EH;taller=TRUE; } if(EQ(e.key, T-data.key){Taller=FALSE; return 0} if(LT(e.key, T-data.key) //插入到左子树 else //插入到右子树 程序讲解-主程序 //插入到T的左子树 if(!InsertVAL(T-lchild, eTaller)) return 0;//子树中已经有e if(taller){ switch(T-bf){ case LH://原来左子树高,插入左子树后更高,需要平衡 LeftBalance(T); taller=FALSE; break; case EH://原来平衡,插入左子树后,则长高 T-bf = LH; taller = TRUE; break; case RH://原来右子树重,左子树长高后,则平衡 T-bf = EH; taller = FALSE; break; }//switch }//if(taller) 程序讲解-左平衡 void LeftBalance(BSTree T){ lc = T-lchild; switch(lc-bf){ case LH://插入到左子树的左子树中 T-bf = lc-bf = EH; R_Rotate(T); break; A B AR T lc h-1 BR h 2 1 A B AR h-1 BR h 0 0 程序讲解-左平衡 case RH://LR rd = lc-rchild; switch(rd-bf){//插入到右子树中 case LH: T-bf = RH; lc-bf = EH; break;//a case EH: T-bf = lc-bf = EH; break;//b case RH: T-bf = EH; lc-bf = LH; break;//c } rd-bf = EH; L_Rotate(T-lchild) R_Rotate(T); }//switch(lc-bf) }//LeftBalance 程序讲解-左平衡 A B AR T lc h-1 CR 2 -1 C BL rd 1 A B AR CR C BL CL 0 插入到C的左孩子中,并使得C左重 -1 0 CL h-2 (a) A B AR CR C BL CL

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档