Chapter 9 高度平衡二元搜寻树 AVL Binary Search Tree.pptVIP

Chapter 9 高度平衡二元搜寻树 AVL Binary Search Tree.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Chapter 9 高度平衡二元搜寻树 AVL Binary Search Tree

Chapter 9 高度平衡二元搜尋樹 AVL Binary Search Tree 高度平衡二元樹 何謂高度平衡二元樹(height balanced binary tree)? 空樹(empty tree)是高度平衡二元樹 假使T不是空的二元樹,TL和TR分別是此二元樹的左子樹和右子樹,若符合下列二個條件,則稱T為高度平衡二元樹,也稱為AVL-Tree。 TL和TR亦是高度平衡二元樹, |hL-hR|≦1,其中hL及hR分別是TL和TR的高度; hL-hR為平衡因子(balanced factor,BF),在AVL-Tree中,每一節點的平衡因子為-1、0或1 高度平衡二元樹 一棵二元樹的平衡因子 高度平衡二元樹加入及其調整方式 利用加入的節點A與它最接近平衡因子絕對值大於1(|BF|1)的節點B 高度平衡二元樹可能會因為加入或刪除某節點而造成不平衡,此時必須利用四種不同的調整方式來重建一棵AVL-tree使其平衡。 四種調整方式: LL型:加入新節點於節點s的左子樹之左子樹 RR型:加入新節點於節點s的右子樹之右子樹 LR型:加入新節點於節點s的左子樹之右子樹 RL型:加入新節點於節點s的右子樹之左子樹 高度平衡二元樹加入及其調整方式 原則: 先找到最接近新節點之平衡因子絕對值大於1(|BF|1)的祖先節點 將其高度降低使其符合AVL的定義 LL 往右旋轉(rotate) RR 往左旋轉 LR 先右後左 RL 先左後右 高度平衡二元樹加入及其調整方式 LL型:加入新節點於節點s的左子樹之左子樹 高度平衡二元樹加入及其調整方式 高度平衡二元樹加入及其調整方式 RR型:加入新節點於節點s的右子樹之右子樹 此RR型與LL型大同小異,如加入前的AVL-tree為: 高度平衡二元樹加入及其調整方式 高度平衡二元樹加入及其調整方式 LR型:加入新節點於節點s的左子樹之右子樹 高度平衡二元樹加入及其調整方式 高度平衡二元樹加入及其調整方式 高度平衡二元樹加入及其調整方式 RL型:加入新節點於節點s的右子樹之左子樹 高度平衡二元樹加入及其調整方式 高度平衡二元樹刪除及其調整方式 AVL-tree的刪除與二元搜尋樹的刪除相同,當刪除的動作完成後,再計算平衡因子,作適當的調整,直到平衡因子的絕對值皆小於等於1。 高度平衡二元樹刪除及其調整方式 假設存在一棵AVL-tree如左下圖,若欲刪除50,因為它為一樹葉節點,故直接刪除之,成為右下圖,刪除後再進行調整 高度平衡二元樹刪除及其調整方式 從樹根尋找pivot點(遇到第一個BF值的絕對值大於1的節點) 由pivot節點的BF值大於等於0時往左子樹、小於0則往右子樹找下一個節點,來決定調整的型態。 高度平衡二元樹刪除及其調整方式 調整規則如下: 當pivot?BF 0 pivot?llink?BF = 0 ?LL型 pivot?llink?BF = 0 ?LR型 當pivot?BF 0 pivot?rlink?BF = 0 ?RL型 pivot?rlink?BF = 0 ?RR型 * * Q M S P R N BF=1 BF=0 BF= –2 BF=1 BF=0 hL(M)=0, hR(M)=2 hL-hR=-2 50 40 50 40 30 加入30 2 1 0 不是一棵AVL-tree 調整 40 30 50 0 0 0 50 40 60 1 0 30 45 0 例二: 加入20 50 40 60 2 0 30 45 0 20 0 0 1 1 0 40 30 50 0 20 1 0 調整 45 60 0 0 0 50 60 0 0 加入70 50 60 -2 -1 70 0 不是一棵AVL-tree 60 50 70 0 0 0 調整 50 40 60 -1 0 55 70 0 例二: 加入80 0 0 50 40 60 -2 -1 55 70 -1 0 0 80 0 60 50 70 0 40 0 0 調整 55 80 0 0 -1 50 40 50 40 加入45 2 -1 45 0 調整 45 40 50 例二: 50 40 60 30 45 加入42 50 40 60 0 30 -1 0 45 1 42 2 0 45 40 50 30 42 60 調整 50 60 50 60 -2 1 56 0 加入56 56 50 60 調整 50 40 60 -1 0 56 70 0 0 0 例二: 50 40 60 -2 1 56 70 0 0 1 52 0 加入52 56 50 60 0 40 0 0 52 70 0 0 調整 30 20 50 10 25 30 20 10 25 刪除50 調整 2 0 0 0 20 10 30 -1 1 0 25 0 O(log n)

文档评论(0)

qiwqpu54 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档