- 1、本文档共60页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
平均情况: 设有n个关键字序列,其中i个小于第1个关键字, 则有n-i-1个大于第1个关键字, 其平均查找长度为p(n,i) 根 i个 n-i-1个 P(i) P(n-i-1) p(n,i)=[1+i*(p(i)+1)+(n-i-1)*(p(n-i-1)+1)]/n 假设n个关键字的排列是随机的, 即小于第1个关键字的个数i从0到n-1按等概率计算 1 n-1 P(n) = —∑ p(n,i) n i=0 2 n-1 = 1+ — ∑ i*p(i) n≥ 2 n2 i=1 因:P(0) = 0 ; P(1) = 1 可证明:P(n)≤ 1+4log2n 对n!中二叉排序树进行平均,平均比较次数为O(log2n) 4、平衡二叉树(Balanced Binary Tree) 定义:平衡二叉树或者是一棵空树,或者是具有下列性质的 二叉树,它的左子树和右子树都是平衡二叉树,且左 子树和右子树的深度之差的绝对值不超过1。 平衡因子BF(Balanced Factor): 该结点左子树深度减去其右子树深度 例:关键字序列(13,24,37,90,53) 一般情况下,若插入一个叶子结点,相应子树的根结点变化大致有三种情况: 1)结点原来平衡,现在变成左重或右重 2)结点原来某一边重,而现在成为平衡的 3)结点原来就是左重或右重,而新结点加在重的一边 有两种情况需要调整 (1) 由于新结点加到本来就重的一边,如右重新结点插入到右边的右子树中(相对为左重插入到左边的左子树中) A B α h-1 β h-1 γ h -2 -1 中序序列:αAβBγ RR A B α h-1 β h-1 γ h 0 0 中序序列:αAβBγ h+1 h+1 void L-Rotate (BSTree p ) { rc = p - rchild ; p - rchild = rc - lchild ; rc - lchild = p ; p = rc ; } rc p 左重插入到左边的左子树中 2 1 中序序列:αBβAγ LL 中序序列:αBβAγ A B γ h-1 β h-1 α h A B γ h-1 β h-1 α h 0 0 h+1 h+1 void R-Rotate (BSTree p ) { lc = p - lchild ; p - lchild = lc - rchild ; lc- rchild = p ; p = lc ; } p lc (2) 原树右重,新结点插入到右边的左子树中(相对为左重插入到左边的右子树中) -2 1 中序序列:αAβCγBδ RL A B α h-1 γ h-2 β h-1 C δ h-1 1 中序序列:αAβCγBδ A B α h-1 γ h-2 β h-1 C δ h-1 A B α h-1 γ h-2 β h-1 C δ h-1 0 -1 0 插入前深度:h+1 调整后深度:h+1 #define LH +1 #define EH 0 #define RH -1 typedef struct BSTNode { ElemType data ; int bf ; struct BSTNode * lchild , * rchild ; }BSTNode , * BSTree ; void R-Rotate (BSTree p ) { lc = p - lchild ; p - lchild = lc - rchild ; lc- rchild = p ; p = lc ; } void L-Rotate (BSTree p ) { rc = p - rchild ; p - rchild = rc - lchild ; rc - lchild = p ; p = rc ; } Status InsertAVL ( BSTree T , ElemType e , Boolean taller ) { if ( !T ) { T = ( BSTree ) malloc ( sizeof ( BSTNode ) ) ; T-data = e ; T-lchild =
文档评论(0)