1. 程式人生 > >20172315 2018-2019-2 《程式設計與資料結構》第七週學習總結

20172315 2018-2019-2 《程式設計與資料結構》第七週學習總結

20172315 2018-2019-2 《程式設計與資料結構》第七週學習總結

教材學習內容總結

  • 二又查詢樹是一種含有附加屬性的二又樹,即其左孩子小於父結點,而父結點又小於或等於右孩子。
  • 每個BinaryTreeNode物件要維護一個指向結點所儲存元素的引用,另外還要維護指向結點的每個孩子的引用。
  • 從二又查詢樹中刪除一個元素時,必須推選出另一個結點來代替要被刪除的那個結點。
  • 二又查詢樹的最右側結點會存放最大元素,而其最左側結點會存放最小元素。
  • 如果二又查詢樹不平衡,其效率可能比線性結構的還要低。
  • 右子樹的高度減去左子樹的高度稱為該結點的平衡因子。
  • 樹(或樹的任何子樹)只有兩種途徑能變得不平衡:插入結點或刪除結點。
  • 紅黑樹
    根結點為黑色。
    紅色結點的所有孩子都為黑色。
    從樹根到樹葉的每條路徑都包含同樣數目的黑色結點。

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

  • 問題1:書上講的紅黑樹不太理解
  • 問題1解決方案:在藍墨雲上找到老師推薦的網站加深理解
    紅黑樹(Red-Black Tree,簡稱R-B Tree),它一種特殊的二叉查詢樹。
    紅黑樹是特殊的二叉查詢樹,意味著它滿足二叉查詢樹的特徵:任意一個節點所包含的鍵值,大於等於左孩子的鍵值,小於等於右孩子的鍵值。
    除了具備該特性之外,紅黑樹還包括許多額外的資訊。

紅黑樹的每個節點上都有儲存位表示節點的顏色,顏色是紅(Red)或黑(Black)。
紅黑樹的特性:

(1) 每個節點或者是黑色,或者是紅色。

(2) 根節點是黑色。

(3) 每個葉子節點是黑色。 [注意:這裡葉子節點,是指為空的葉子節點!]

(4) 如果一個節點是紅色的,則它的子節點必須是黑色的。

(5) 從一個節點到該節點的子孫節點的所有路徑上包含相同數目的黑節點。

關於它的特性,需要注意的是:
第一,特性(3)中的葉子節點,是隻為空(NIL或null)的節點。
第二,特性(5),確保沒有一條路徑會比其他路徑長出倆倍。因而,紅黑樹是相對是接近平衡的二叉樹。

紅黑樹示意圖如下:

參考資料
資料
參考文獻

  • 問題2:書上的avl樹無法理解
  • 問題2解決方案:在網上查詢資料:平衡二叉樹定義(AVL):它或者是一顆空樹,或者具有以下性質的二叉樹:它的左子樹和右子樹的深度之差(平衡因子)的絕對值不超過1,且它的左子樹和右子樹都是一顆平衡二叉樹。

平衡因子(bf):結點的左子樹的深度減去右子樹的深度
資料

程式碼除錯中的問題和解決過程

(statistics.sh指令碼的執行結果截圖)

上週考試錯題總結

上週無錯題~

結對及互評

點評模板:

  • 部落格中值得學習的或問題:
    • 部落格中圖片過少
    • 對於教材內容解析很到位
  • 程式碼中值得學習的或問題:
    • 程式碼簡潔明瞭
    • 程式碼不太規範,註釋過少

點評過的同學部落格和程式碼

  • 本週結對學習情況
    • 20172318
    • 結對學習內容
      • 第十一章
  • 上週部落格互評情況

學習進度條

程式碼行數(新增/累積) 部落格量(新增/累積) 學習時間(新增/累積) 重要成長
目標 5000行 30篇 400小時
第一週 0/0 0/0 0/0
第二週 800/800 2/2 18/18
第三週 600/1400 3/5 22/40
第四周 700/1300 3/8 22/62
第五週 400/1700 3/11 22/84
第六週 200/1900 2/13 20/94
第七週 400/2300 2/15 20/114

參考資料