20172316 2018-2019-1《程序設計與數據結構》第七週學習總結

20172316 2018-2019-1《程序設計與數據結構》第七週學習總結

教材學習內容總結

第十一章 二叉查找樹

二叉查找樹:

上個星期學習了樹,本星期接着學習樹的一種擴展:二叉查找樹(Binary Search Tree)。它最大的特色就是左孩子小於父節點,右孩子大於父節點,這種特色讓二叉查找樹從建立到插入元素都能維持排序的屬性(主要表如今:中序遍歷時元素能準確按照由小到大的順序排列),有利於以後對樹中元素的處理,特別是須要用到搜索時能大大提升搜索效率(低至O(log₂n))(不平衡樹除外╰(‵□′)╯)。html

操做 說明
addElement 往樹中添加一個元素
removeElement 從樹中刪除一個元素
removeAllOccurences 從樹中刪除所指定元素的任何存在
removeMin 刪除樹中的最小元素
removeMax 刪除樹中的最大元素
findMin 返回一個指向樹中最小元素的引用
findMax 返回一個指向樹中最大元素的引用

平衡二叉查找樹:

二叉查找樹要表現出它高效的優勢,必需要達到平衡,不然其效率甚至不如線性的鏈表。
(圖)git

爲此,書中介紹了平衡化二叉查找樹的方法——旋轉,兩種平衡化二叉查找樹——AVL樹、紅黑樹。
旋轉:以右旋爲例,其應用於左子樹高度太高的非平衡樹的平衡化中,步驟爲:數據結構

  1. 使(子)樹根的左孩子元素成爲新的根元素;
  2. 使原根元素成爲這個新樹根的右孩子元素;
  3. 使原樹根的左孩子的右孩子,成爲原樹根的新的左孩子。

(圖)學習

左旋反之。並不是全部不平衡問題只須要一次旋轉就夠解決了,在具體過程當中要應變地使用左右旋轉。設計

教材學習中的問題和解決過程

1、紅黑樹與AVL樹做爲平衡化二叉查找樹的手段,二者到底各有何種優越性?調試

  1. 紅黑樹不追求"徹底平衡",書中提到:htm

    在某種程度上,紅黑樹中的平衡限制沒有AVL樹那麼嚴格。可是...blog

非嚴格的平衡給紅黑樹帶來了什麼好處呢?——它的旋轉次數獲得下降,任何不平衡將在3次旋轉之內解決,對於插入和刪除致使的失衡,紅黑樹能夠更快地調整本身的平衡。排序

  1. AVL樹實現徹底平衡也有本身的好處,咱們之因此平衡化二叉查找樹,就是爲了提升搜索效率,徹底平衡相對應的固然就是最高效的搜索效率。

代碼調試中的問題和解決過程

(無)教程


代碼託管

(statistics.sh腳本的運行結果截圖)


上週考試錯題總結

上週無錯題


學習進度條

代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積) 重要成長
目標 5000行 30篇 400小時
第一週 0/0 1/1 6/6
第二週 771/771 1/2 16/22
第三週 562/1233 1/3 15/37
第四周 1503/2736 2/5 15/52
第五週 1152/3888 1/6 10/62
第六週 787/4675 1/7 10/72
第七週 1214/5889 1/8 9/81

結對互評

唐才銘19
王文彬29

參考資料

相關文章
相關標籤/搜索