一、樹、森林與二叉樹轉換的意義
二叉樹由於每個結點最多只能有左孩子和右孩子,而在樹中乙個結點可以包括任意數目的子結點,因此二叉樹的很多性質和演算法被研究了出來。如果所有的樹都向二叉樹一樣方便就好了。樹與二叉樹、森林與二叉樹之間可以相互轉換,而且這種轉換是一一對應的。
二、樹轉換為二叉樹
為了操作方便,假設樹是一棵有序樹,也就是說將樹中每乙個結點的孩子按從左到右的順序進行編號,
將樹轉換為二叉樹的步驟為:
由轉換過程可知,樹與由它轉換成的二叉樹是一一對應的,樹中的任意乙個結點都對應著二叉樹中的每乙個結點,樹中每乙個結點的第1個孩子結點在二叉樹中是對應結點的左孩子,而樹中每一結點的右鄰兄弟在二叉樹中是對應結點的右孩子(e的右鄰兄弟是f,所以f是e的右孩子;f的右鄰兄弟是g,所以g是f的右孩子)。也就是說,在二叉樹中,左分支上的每個結點在原來的樹中是父子關係,而右分支上的各個結點在原來的樹中是兄弟關係。由於樹中的根結點沒有兄弟,所以由樹轉換成的二叉樹永遠都是一顆根結點的右子樹為空的二叉樹。
三、二叉樹轉換為樹
二叉樹轉換為樹是樹轉換為二叉樹的逆過程,具體步驟為:
四、森林轉換為二叉樹
森林是若干棵樹的集合,而任何一顆和樹對應的二叉樹的右子樹一定為空,則可以得到將森林轉換為二叉樹的步驟為:
五、二叉樹轉換為森林
判斷一顆二叉樹能夠轉換成一顆樹還是森林,只要看這棵二叉樹的根結點有沒有右孩子,如果有右孩子就是森林,沒有右孩子就是一棵樹。二叉樹轉換為森林的步驟為:
六、樹的遍歷
樹可以被看成由樹的根結點和根結點的所有子樹所構成的森林兩部分構成,因此樹的遍歷操作主要有前序遍歷、後序遍歷和層次遍歷三種方式。
1.前序遍歷:
若樹為非空,則
2.後序遍歷
若樹為非空,則
3.層次遍歷
若樹為非空,則
七、森林的遍歷
森林也可以看成是由第一棵樹的根結點、第一棵樹的根結點的子樹所構成的森林和除第一棵樹之外的其餘樹所構成的森林三部分構成。
1.前序遍歷
若森林為非空,則
2.後序遍歷
若森林為非空,則
3.層次遍歷
若森林為非空,則
資料結構 樹 與 二叉樹 森林
一 常用術語 1 樹的節點 2 節點路徑 從根節點到該節點所經歷的節點和分支的順序。3 路徑長度 節點路徑包含的分支數。4 節點的度 節點擁有的子樹的數目。5 樹的度 所有節點的度 中 的最大值。6 葉子節點 終端節點 樹中 節點的度為0的節點。7 分支節點 非終端節點 樹中 節點的度不為0的節點。...
樹 森林轉二叉樹(資料結構)
樹轉二叉樹 1 加線 在所有兄弟結點之間加一條連線。2 去線 樹中的每個結點,只保留它與第乙個孩子結點的連線,刪除它與其它孩子結點之間的連線。3 層次調整 以樹的根節點為軸心,將整棵樹順時針旋轉一定角度,使之結構層次分明。注意第乙個孩子是結點的左孩子,兄弟轉換過來的孩子是結點的右孩子 森林轉換為二叉...
資料結構 樹 森林和二叉樹的轉換
樹轉換為二叉樹 1 加線。在所有兄弟結點之間加一條連線。2 去線。樹中的每個結點,只保留它與第乙個孩子結點的連線,刪除它與其它孩子結點之間的連線。3 層次調整。以樹的根節點為軸心,將整棵樹順時針旋轉一定角度,使之結構層次分明。注意第乙個孩子是結點的左孩子,兄弟轉換過來的孩子是結點的右孩子 森林轉換為...