資料結構——樹和森林
思維導圖
樹
樹是一種邏輯結構
樹是n個結點的有限集合,n=0時,稱為空樹,任意的非空樹滿足一下要求:
1)有且僅有一個特定的稱為根的結點。
2)當n>1時,其餘結點可分為m個互不相交的有限集合,其中每個集合本身又是一棵樹,稱為根結點的子樹,n個結點的樹只有n-1條邊
3)樹個根節點沒有前驅結點,除了根節點以外的所有結點都有且僅有一個前驅結點
4)數中的結點有多個或者0個後繼結點
樹的基本術語
祖先結點,子孫結點,雙清結點:k結點,根結點A到K的唯一路徑上的任意結點(A,B,E),都是k結點的祖先結點,k是它們的子孫結點,而離k最近的祖先結點E,可稱為雙親結點,根結點A是唯一一個沒有雙親結點的,擁有共同雙親結點的結點稱之為兄弟結點,如K,L
度:樹中一個結點的孩子結點個數稱之為該節點的度。如B的度為2,D的度為3,數的度:樹種最大度數為樹的度如圖為3
分支結點:度大於0的結點
子結點:度等於0的結點
結點層次:如圖根節點為第一層,根結點的子節點為第二層,依次向下,如圖
結點的深度:是從根節點開始自頂向下累加的
結點的高度:是從葉結點開始自下向上累加的
數的高度和深度是樹種結點的最大層數
有序樹指樹的結點從左到右是有序的,不能任意更換,無序樹是指結點從左到右沒有規律,可以互換
路徑和路徑長度:數的路徑是由兩個結點之間經過的結點序列,而路徑長度是指這個序列的長度,樹的路徑長度是從根結點到每個結點路徑長度的總和。
森林:森林是m顆互不相交的數的集合。
樹的性質
樹中結點數等於所有結點的度數加1
度為m的樹中第i層上至多有mi-1 個結點
高度為h的m叉樹至多有(mh -1)/(m-1)個結點
具有n個結點的m叉樹的最小高度為log (n(m-1)+1,m)取上限
二叉樹
定義:有左孩子和右孩子的樹
不同孩子的二叉樹不為同一二叉樹,一顆兩層的二叉樹有5中情況
特殊的二叉樹
滿二叉樹
完全二叉樹
二叉排序樹(二叉搜尋樹)
平衡二叉樹
任意結點的左孩子和右孩子深度之差不超過1
二叉樹的性質
二叉樹的儲存結構
順序儲存
根據完全二叉樹的性質左孩子2i,右孩子為2i+1,順序表示每個結點的關係
鏈式儲存
一個結點定義兩個指標域分別指向左孩子和右孩子
二叉樹的遍歷
先序遍歷
時間複雜度O(n)
中序遍歷
後序遍歷
層次遍歷
出隊一個元素壓入此元素的左孩子和右孩子
由遍歷序列構造二叉樹
後序和中序,前序和中序,層次和中序可以構造出二叉樹,前序和後序不可以確定一顆二叉樹
線索二叉樹
線索化
若無左子樹,則將左指標指向其前驅結點,若無右子樹,則將指標指向後繼結點
樹的儲存結構
雙親表示法
孩子表示法
孩子兄弟表示法
三種表示法的有優缺點
樹和二叉樹
數和二叉樹的轉換
左指標指向孩子結點,右指標指向兄弟結點
二叉樹向數的轉變為逆過程
森林轉換為二叉樹
把森林中的所有樹轉換為二叉樹,然後每顆二叉樹的根作為上一顆二叉樹的右子樹
二叉樹返回森林為逆過程
樹和森林的遍歷
樹的遍歷
先根遍歷 後根遍歷 層次遍歷
森林的遍歷
相關文章
- 資料結構中樹和森林的區別資料結構
- [資料結構] 樹、二叉樹、森林的轉換資料結構二叉樹
- 樹和森林
- 資料結構——樹資料結構
- 資料結構-樹資料結構
- 重學資料結構(六、樹和二叉樹)資料結構二叉樹
- 重學資料結構之樹和二叉樹資料結構二叉樹
- 資料結構 - 樹,初探資料結構
- 資料結構 - AVL 樹資料結構
- 前端資料結構--樹前端資料結構
- 資料結構-字典樹資料結構
- 資料結構之「樹」資料結構
- 『資料結構』樹(Tree)資料結構
- 資料結構學習之樹結構資料結構
- 七、基本資料結構(樹形結構)資料結構
- 資料結構(樹):二叉樹資料結構二叉樹
- 高階資料結構---堆樹和堆排序資料結構排序
- 資料結構之樹( 線段樹,字典樹)資料結構
- 資料結構 - 樹,再探資料結構
- [資料結構] 劃分樹資料結構
- 資料結構-線段樹資料結構
- 資料結構--紅黑樹資料結構
- 資料結構丨字首樹資料結構
- 【資料結構】搜尋樹資料結構
- 資料結構之「AVL樹」資料結構
- 資料結構-佇列-樹資料結構佇列
- [譯] Golang 資料結構:樹Golang資料結構
- 資料結構之「霍夫曼樹」資料結構
- 資料結構之「B樹」資料結構
- js資料結構--樹(tree)JS資料結構
- 資料結構中樹形結構簡介資料結構
- 資料結構和演算法:二叉樹資料結構演算法二叉樹
- 資料結構——樹狀陣列資料結構陣列
- 資料結構--2-3樹資料結構
- 【資料結構】淺談主席樹資料結構
- 資料結構 - 二叉樹資料結構二叉樹
- 資料結構-二叉樹資料結構二叉樹
- 資料結構丨N叉樹資料結構