20172318 2018-2019-1 《程序設計與數據結構》第6周學習總結
20172318 2018-2019-1 《程序設計與數據結構》第6周學習總結
教材學習內容總結
樹
- tree:樹 樹是一種非線性結構,其元素是按分層組織的。
- 一種可能的計算策略是將元素n的左孩子置於位置(2×n+1),將右孩子置於位置(2x(n+1))
- node:結點 樹中的一個位置。
- edge:邊 樹中兩個結點的鏈接。
- root:根結點 位於樹中最高層的結點,在該樹中,該結點沒有父結點。
- level:層結點 至關.於樹的根結點的位置。
- child:子結點 位於樹中當前結點下面的結點,並由邊與之直接鏈接。
- sibling:同胞結點 屬於同一結點的子結點。
- leaf:葉結點 樹中再也不有任何告終點的結點。
- internalnode:內部結點 樹中的結點,它不是根結點,且至少有一個子結點。
- path:路徑 鏈接樹中一個結點與另外一個結點的邊的集合。
- ancestor:祖先結點 位於當前結點以上的結點。
- descendant:後代結點 位於當前結點一下的結點。
- pathlength,路徑長度 鏈接一個結點與另外一個結點的邊的數量。
- treeheight:樹高度 從根結點到葉結點的最長路徑的長度。
- 通常而言一棵含有m個元素的平衡n元樹具備的高度爲lognm
- treeorder:樹的階 樹中結點具備的最大子結點數。
- generaltree:通常樹 對結點的子結點數沒有限制的樹。
- n-arytree:n元樹 結點的子結點數很少於n的樹。
- binarytree:二叉樹 結點的子結點數很少於2的樹。
- balanced:平衡 粗略地說,若是全部葉結點都位於同一層,或至少位於其餘某一層,就認爲是平衡樹。
- complete:徹底 若是是平衡樹,且最底層的葉結點位於樹的左邊,就認爲是徹底樹。
- full:完整 若是樹的全部葉結點位於同一層,且每一個結點要麼是葉結點,要麼正好有n個子結點,那麼就認爲這種n元樹是完整樹。
- freelist:在樹的數組實現中,可用位置的列表。
- binarysearchtree:二叉查找樹 左子結點老是小於父結點,而父結點又老是小於或等於右子結點,那麼這種二叉樹就是二叉查找樹。
- preordertraversal:前序遍歷 從根結點廾始,訪問每一結點及其孩了的樹遍歷。
- inordertraversal:中序遍歷 從根結點開始,訪問結點的左子結點,再是該結點,而後是其他結點的樹遍歷。
- postordertraversal:後序遍歷 從根結點開始,先訪問孩子結點,而後訪問每一結點的樹遍歷。
- level-ordertraversal:層序遍歷 從根結點開始,每次訪問同一層中的全部結點的樹遍歷。
- 用鏈表實現二叉樹
- BinaryTreeNode類。該類負責跟蹤存儲在每一個位置上的元素,以及指向每一個結點的左右子樹或孩子的指針。
- find方法。與前面集合中的同樣,find方法經過使用存儲在樹中的類的equals方法來斷定等同性,來遍歷該樹。這就將等同性的定義置於了存儲在樹中的那個類的控制之下。若是沒有找到目標元素,那麼find方法將拋出一個異常。
- iteratorlnOrder方法。其任務是建立一個Iterator對象,它容許一個用戶類在中序遍歷中單步遍歷樹的元素。該問題的解決方案給咱們提供了使用一個集合來構建另外一個集合的另外一例子。咱們僅僅經過使用前面僞代碼中的一個visit定義來遍歷該樹,該僞代碼將結點的內容添加到了某個無序列表中。而後,做爲該樹的iterator方法的結果,返回該列表迭代器。
教材學習中的問題和解決過程
- 問題1:如何將一棵樹轉化爲對應的二叉樹?
- 問題1解決方案:
將 節點的孩子 放在左子樹;html
將 節點的兄弟 放在右子樹。node
代碼調試中的問題和解決過程
無git
上週考試錯題總結
上週無測試數組
點評過的同窗博客和代碼
學習進度條
目標 |
5000行 |
30篇 |
400小時 |
|
第一週 |
0/0 |
1/1 |
8/8 |
|
第二週 |
500/500 |
1/2 |
15/ 23 |
|
第三週 |
802/1302 |
1/3 |
12/35 |
|
第四周 |
1530/2832 |
2/5 |
15/50 |
|
第五週 |
1165/3997 |
1/6 |
10/60 |
|
第六週 |
1169/5166 |
1/7 |
15/75 |
|
參考資料
歡迎關注本站公眾號,獲取更多信息