第7章、高度平衡二元搜寻树.pptVIP

  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文档。上传文档
查看更多
第7章、高度平衡二元搜寻树.ppt

第 7 章、 高度平衡二元搜尋樹 朝陽科技大學 王淑卿 大綱 7.1 何謂高度平衡二元搜尋樹 7.2 高度平衡二元搜尋樹的加入 7.3 高度平衡二元搜尋樹的刪除 7.1 何謂高度平衡二元搜尋樹 何謂高度平衡二元樹(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 7.1 何謂高度平衡二元搜尋樹 一棵二元樹的平衡因子 7.2 高度平衡二元搜尋樹的加入 高度平衡二元搜尋樹在加入或刪除後,可能會造成不平衡,此時可利用LL,RR,LR,RL 等四種不同的調整方式,使其符合AVL-tree 的定義 1. LL:加入的新節點N 在節點p 的左邊的左邊 2. RR:加入的新節點N 在節點p 的右邊的右邊 3. LR:加入的新節點N 在節點p 的左邊的右邊 4. RL:加入的新節點N 在節點p 的右邊的左邊 7.2 高度平衡二元搜尋樹的加入 LL型:加入新節點於節點s的左子樹之左子樹 7.2 高度平衡二元搜尋樹的加入 7.2 高度平衡二元搜尋樹的加入 7.2 高度平衡二元搜尋樹的加入 7.2 高度平衡二元搜尋樹的加入 LR型:加入新節點於節點s的左子樹之右子樹 7.2 高度平衡二元搜尋樹的加入 7.2 高度平衡二元搜尋樹的加入 7.2 高度平衡二元搜尋樹的加入 RL型:加入新節點於節點s的右子樹之左子樹 7.2 高度平衡二元搜尋樹的加入 7.3 高度平衡二元搜尋樹的刪除 高度平衡二元搜尋樹的刪除方法與二元搜尋樹相同,當刪除的動作完成後,必需再計算平衡因子,並做適當的調整 7.3 高度平衡二元搜尋樹的刪除 假設存在一棵AVL-tree如左下圖,若欲刪除50,因為它為一樹葉節點,故直接刪除之,成為右下圖,刪除後再進行調整 7.3 高度平衡二元搜尋樹的刪除 從樹根尋找pivot點(遇到第一個BF值的絕對值大於1的節點) 由pivot節點的BF值大於等於0時往左子樹、小於0則往右子樹找下一個節點,來決定調整的型態 7.3 高度平衡二元搜尋樹的刪除 調整規則如下: 當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型 結論 一棵二元搜尋樹,如果左子樹與右子樹的高度能夠維持在平衡的情況時,則其搜尋時間會減低。平衡二元樹(Balanced Binary Tree)的觀念是由Adelson-Velskii與Landis兩位專家提出,所以就稱為AVL樹。AVL Tree的平衡樹,就是調整二元搜尋樹的左右子樹的高度,來達到二元樹的平衡,因此稱AVL Tree又稱為高度平衡二元搜尋樹。 在計算機科學中,AVL樹是最先發明的自平衡二元搜尋樹。在AVL樹中任何節點的兩個子樹的高度最大差別為一,所以它也被稱為高度平衡樹。查找、插入和刪除在平均和最壞情況下都是O(log n)。增加和刪除可能需要通過一次或多次樹旋轉來重新平衡這個樹。 結論 節點的平衡因子是它的左子樹的高度減去它的右子樹的高度(有時相反)。帶有平衡因子1、0或 -1的節點被認為是平衡的。帶有平衡因子 -2或2的節點被認為是不平衡的,並需要重新平衡這個樹。平衡因子可以直接存儲在每個節點中,或從可能存儲在節點中的子樹高度計算出來。 AVL樹必須要合乎下列兩個條件: 是一種二元搜尋樹。 高度須保持平衡狀態。 結論 【定義】為一棵高度平衡的二元搜尋樹,可以為空,若不為空,則必須滿足: TL 和 TR 為高度平衡樹。 |hL - hR| = 1,其中 hL和hR分別為TL和TR的高度。 二元搜尋樹是一種將資料作排序動作的一種樹狀結構,這種樹狀結構有可能會產生斜曲樹,因而造成搜尋上比較浪費時間並且沒有效率,因此,若要解決此一問題,就是將原來的二元搜尋樹調整為AVL Tree。 * * 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 0 0 調整 45 60 0 0 RR型:加入

文档评论(0)

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

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

1亿VIP精品文档

相关文档