樹的表示方法


樹的表示方法

樹的表示方法一般有三種:遍歷表示法,括號序列法以及prufer數列。

 

1.遍歷表示法

遍歷表示法就是通過遍歷一棵樹來確定這棵樹的表示方法。遍歷方法有三種:先序遍歷,中序遍歷和后序遍歷。

先序遍歷:按照父節點,左子結點,右子節點來遍歷(簡稱 頭左右)。以上圖為例,先序遍歷表達式為1 2 4 8 9 5 10 3 6 7。

中序遍歷:按照左子結點,父節點,右子節點來遍歷(簡稱 左頭右)。以上圖為例,中序遍歷表達式為8 4 9 2 10 5 1 6 3 7。

后序遍歷:按照左子結點,右子節點,父節點來遍歷(簡稱 左右頭)。以上圖為例,后序遍歷表達式為8 9 4 10 5 2 6 7 3 1。

2.括號序列法

通過遍歷樹時的遍歷順序以及出入每個節點的時間組成的序列。

按照先序遍歷即為:(1(2(4(8)(9))(5(10))(3(6)(7))。

3.prufer數列

將一棵n各節點的無根樹轉化為長度為n-2的字符串,字符串與樹之間一一對應。

生成字符串:每次將最小的葉結點的父節點存入字符串,並刪除該葉結點,直到無根樹只剩兩個節點。

還原無根樹:每次將字符串中第i個節點和從i到n-2未出現過的最小的節點連接起來,最后連接無根樹剩余的那兩個節點。

生成步驟:

找到6,字符串存入3,刪除6,當前字符串為:3。

找到7,字符串存入3,刪除7,當前字符串為:3 3。

找到3,字符串存入1,刪除3,當前字符串為:3 3 1。

找到1,字符串存入2,刪除1,當前字符串為:3 3 1 2。

找到8,字符串存入4,刪除8,當前字符串為:3 3 1 2 4。

找到9,字符串存入4,刪除9,當前字符串為:3 3 1 2 4 4。

找到4,字符串存入2,刪除4,當前字符串為:3 3 1 2 4 4 2。

找到10,字符串存入5,刪除10,當前字符串為:3 3 1 2 4 4 2 5。

最后剩余兩節點為2 5。

還原步驟:

找到3,3之后未出現且未被標記的點為6,標記點6,連接3 6。

找到3,3之后未出現且未被標記的點為7,標記點7,連接3 7。

找到1,1之后未出現且未被標記的點為3,標記點3,連接1 3。

找到2,2之后未出現且未被標記的點為1,標記點1,連接1 2。

找到4,4之后未出現且未被標記的點為8,標記點8,連接4 8。

找到4,4之后未出現且未被標記的點為9,標記點9,連接4 9。

找到2,2之后未出現且未被標記的點為4,標記點4,連接2 4。

找到5,5之后未出現且未被標記的點為10,標記點10,連接5 10。

最后連接生成時最后剩余的兩點2 5。

以上三種表示法中,遍歷表示法適用於二叉樹,括號序列法適用於有序樹,prufer數列適用於無根樹。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM