1、樹、森林與二叉樹轉換的意義算法
二叉樹因爲每一個結點最多隻能有左孩子和右孩子,而在樹中一個結點能夠包括任意數目的子結點,所以二叉樹的不少性質和算法被研究了出來。若是全部的樹都向二叉樹同樣方便就行了。樹與二叉樹、森林與二叉樹之間能夠相互轉換,並且這種轉換是一一對應的。blog
2、樹轉換爲二叉樹隊列
爲了操做方便,假設樹是一棵有序樹,也就是說將樹中每個結點的孩子按從左到右的順序進行編號,二叉樹
將樹轉換爲二叉樹的步驟爲:遍歷
由轉換過程可知,樹與由它轉換成的二叉樹是一一對應的,樹中的任意一個結點都對應着二叉樹中的每個結點,樹中每個結點的第1個孩子結點在二叉樹中是對應結點的左孩子,而樹中每一結點的右鄰兄弟在二叉樹中是對應結點的右孩子(E的右鄰兄弟是F,因此F是E的右孩子;F的右鄰兄弟是G,因此G是F的右孩子)。也就是說,在二叉樹中,左分支上的每一個結點在原來的樹中是父子關係,而右分支上的各個結點在原來的樹中是兄弟關係。因爲樹中的根結點沒有兄弟,因此由樹轉換成的二叉樹永遠都是一顆根結點的右子樹爲空的二叉樹。im
3、二叉樹轉換爲樹d3
二叉樹轉換爲樹是樹轉換爲二叉樹的逆過程,具體步驟爲:db
4、森林轉換爲二叉樹img
森林是若干棵樹的集合,而任何一顆和樹對應的二叉樹的右子樹必定爲空,則能夠獲得將森林轉換爲二叉樹的步驟爲:集合
5、二叉樹轉換爲森林
判斷一顆二叉樹可以轉換成一顆樹仍是森林,只要看這棵二叉樹的根結點有沒有右孩子,若是有右孩子就是森林,沒有右孩子就是一棵樹。二叉樹轉換爲森林的步驟爲:
6、樹的遍歷
樹能夠被當作由樹的根結點和根結點的全部子樹所構成的森林兩部分構成,所以樹的遍歷操做主要有前序遍歷、後序遍歷和層次遍歷三種方式。
1.前序遍歷:
若樹爲非空,則
2.後序遍歷
若樹爲非空,則
3.層次遍歷
若樹爲非空,則
7、森林的遍歷
森林也能夠當作是由第一棵樹的根結點、第一棵樹的根結點的子樹所構成的森林和除第一棵樹以外的其他樹所構成的森林三部分構成。
1.前序遍歷
若森林爲非空,則
2.後序遍歷
若森林爲非空,則
3.層次遍歷
若森林爲非空,則