20162320大二第8周學習總結

學號20162320 《程序設計與數據結構》第8周學習總結

教材學習內容總結

1、二叉查找樹

 二叉查找樹,對於每一個結點n,n的左子樹中包含的元素都小於n中的元素,n的右子樹中包含的元素都大於等於n中的元素,即左子樹上的元素小於父結點的值,而右子樹上的元素大於等於父結點的值。以下圖所示。根結點的左子樹每一個元素都小於80,右子樹每一個元素都大於80.

 查找方法,要斷定一個具體的目標是否存在於樹中,須要沿着從根開始的路徑,根據查找目標是小於仍是大於當前結點的值,相應地轉到當前結點的左子結點或右結點。最終或是找到目標元素,或是遇到路徑的末端,後者意味着目標不在樹中。
 在二叉查找樹中添加元素,改過程相似於樹的查找過程,新元素添加爲樹的葉結點,從根開始,沿着每一個結點中元素所肯定的路徑,直到相應地方向上沒有子結點爲止,此時,將新元素添加爲葉結點。html

若是沒有其餘操做,二叉查找樹的樹形由元素的添加順序來決定。git

注:若是輸入是徹底有序的,二叉查找樹就會退化爲一個有序鏈表,削弱了它自己的價值,以下圖所示。

 在二叉查找樹中刪除元素,要考慮以下三種狀況(參考下圖):
算法

  • 第一種狀況:若是被刪除的結點是葉結點(無子結點),能夠簡單地刪除
  • 第二種狀況:若是被刪除的結點是隻有一個子結點,則用它的子結點替代它
  • 第三種狀況,若是被刪除結點有兩個子結點,在樹的更低層找到一個合適的結點來代替它。被刪除結點的子結點成爲替代結點的子結點。

當從二叉查找樹中刪除有兩個子結點的結點是,比較好的辦法是用它的中序後繼來取代它,即在中序遍歷中排在被刪元素以後的那個元素(緊鄰的下一個值)數組

2、平衡二叉查找樹

  在平衡二叉樹中進行查找,比在退化的樹中進行查找的效率高不少。在有n個結點的平衡樹中進行查找及添加操做的效率是進行O(log2 n)次比較(最長路徑的長度)。樹越退化,查找及添加操做的時間複雜度越接近O(n),它抵消了使用查找樹帶來的益處。數據結構

能夠對二叉查找樹進行旋轉以恢復平衡學習

右旋轉
.net

  • 1.令根的左子結點變爲新的根
  • 2.令原根結點變爲新的根結點的右子結點
  • 3.令原根的左子結點的右子結點變爲原根結點的新的左子結點

右旋轉
設計

  • 1.令根的右子結點變爲新的根
  • 2.令原根結點變爲新的根結點的左子結點
  • 3.令原根的右子結點的左子結點變爲原根結點的新的右子結點

並不是全部的不平衡狀況均可以用一個單一的旋轉解決,若是不平衡性是由根的右子結點的左子樹的長路徑引起的,則必須先繞那個異常子樹執行一次右旋轉,而後再繞根執行一次左旋轉(右-左旋轉)。若是不平衡是由根的左子結點的右子樹中的長路徑引起,則執行(左-右旋轉)htm


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

  • 問題1:二叉查找樹與二分查找算法有什麼區別呢?
    解答:二叉查找樹和第13章的二分查找算法有相同的目的;組織並處理數據,這樣每次比較能夠排除大約一半的數據。二分查找算法對有序數組進行操做,而二叉查找樹用它的結構來組織數據。
  • 問題2:當從二叉查找樹中刪除元素,最困難的情形是什麼?
    解答:當從二叉查找樹中刪除一個元素時,最困難的情形是元素有兩個子結點時,由於沒有簡單的選項用來替代元素(如它只有一個子結點或沒有子結點)
  • 問題3:爲何二叉查找樹的平衡性(或接近平衡)如此重要?
    解答:若是二叉查找樹是平衡的,每次比較都會排除差很少一半的元素。樹越不平衡,它力線性結構越近,效率也就越低。

代碼學習中的問題及解決

詳情見個人實驗博客blog


代碼託管


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


上週考試錯題總結

暫未給出答案


結對及互評

點評過的同窗博客和代碼


其餘(感悟、思考等,可選)

我會像奧德休斯同樣, 朝着心中的方向 ,哪怕衆神會在彼岸阻擋 。當我須要獨自站在 ,遠方的沙場 ,武器就是我緊握的夢想 ,而我受過的傷 ,都是個人勳章 。繼續加油!


學習進度條

代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積) 重要成長
目標 5000行 30篇 400小時
第一週 188 1/1 25 算法分析
第二週 70/258 1/2 15/40 《構建之法》7-9章
第三週 474/732 1/3 20/60 查找和排序
第四五六週 1313/2045 4/7 12/72 棧和隊列
第七週 890/2935 1/8 14/86
第八週 913/3848 1/9 20/106 二叉查找樹
第九周
  • 計劃學習時間: 20+小時
  • 實際學習時間: 25小時

(有空多看看現代軟件工程 課件 軟件工程師能力自我評價表)

參考資料

相關文章
相關標籤/搜索