[有向樹] 乙個弱連通有向圖,若去掉方向後得到一棵樹,則稱此有向圖為一棵有向樹,記為t。
[外向樹] 若乙個有向樹t,有且只有乙個頂點入度為0,其餘頂點入度都為1,則稱t為外向樹。t中入度為0的節點被稱為t的根節點,出度為0的節點被稱為t的葉節點。每個節點的有向邊指向的節點被稱為該節點的子節點。
[內向樹] 若乙個有向樹t,有且只有乙個頂點出度為0,其餘頂點出度都為1,則稱t為內向樹。t中出度為0的節點被稱為t的根節點,入度為0的節點被稱為t的葉節點。每個節點的有向邊的反向邊指向的節點被稱為該節點的子節點。
外向樹和內向樹都是有根樹。
如上,圖1為一棵外向樹,圖2為一棵內向樹。
[樹的括號序列最小表示法]
定義s[t]表示以t為根的子樹的括號序列
s[t]=
『(『,』)』 (如果t為葉節點)
『(『,s[c1],s[c2],…,s[ck],』)』 (c1,c2,…,ck為t的k個子節點,s[c1],s[c2],…,s[ck]要按照字典序排列)
為了保證同構的樹的括號序列表示具有唯一性,我們必須規定子樹點的順序。按照子樹的括號序列的字典序就是一種不錯的方法。
例如上述圖2,它的括號序列最小表示就是((()()())())。
[有根樹的同構]
對於乙個有根樹,我們可以通過比較他們的括號序列的最小表示,如果他們的括號序列最小表示完全相等,那麼他們同構。
樹的括號表示法
樹的括號表示法 時 限 1000 ms 記憶體限制 3000 k 總時限 3000 ms 描述 樹的括號表示法 先將根結點放入一對圓括號中,然後把它的子樹按由左而右的順序放入括號中,而對子樹也採用同樣方法處理 同層子樹與它的根結點用圓括號括起來,同層子樹之間用逗號隔開,最後用閉括號括起來。例如下圖可...
標題 樹的括號表示法
樹的括號表示法 時 限 1000 ms 記憶體限制 3000 k 總時限 3000 ms 描述 樹的括號表示法 先將根結點放入一對圓括號中,然後把它的子樹按由左而右的順序放入括號中,而對子樹也採用同樣方法處理 同層子樹與它的根結點用圓括號括起來,同層子樹之間用逗號隔開,最後用閉括號括起來。例如下圖可...
樹的雙親表示法
之前學習樹多是採用鍊錶的,在羊村捕羊的演算法上,採用了線性儲存,為此學習一下。雙親表示法區別於,鍊錶,是用線性陣列來存放樹的。既然是線性的,就用一維陣列來完成,開始想法是,每個陣列的元素為乙個結構體。typedef struct node n,pn 再用乙個結構體將這個線性陣列的資訊包含起來 typ...