天天看點

樹與森林的存儲、周遊和樹與森林的轉換

樹的存儲結構

樹與森林的存儲、周遊和樹與森林的轉換

雙親表示法

樹與森林的存儲、周遊和樹與森林的轉換

孩子表示法:

(a)多重連結清單(連結清單中每個指針指向一棵子樹的根結點);

(b)把每個跟結點的孩子結點排列起來,看成一個線性表,且以單連結清單做存儲結構.且n個頭指針也組成一個線性表.

樹與森林的存儲、周遊和樹與森林的轉換
樹與森林的存儲、周遊和樹與森林的轉換

孩子兄弟表示法://二叉樹表示法或二叉連結清單表示法

以二叉連結清單做樹的存儲結構,連結清單中結點的兩個鍊域分别指向該結點的第一個孩子結點和下一個兄弟結點(fchild 和nsibling)

二叉樹和樹都可用二叉連結清單作存儲結構,則以二叉連結清單作為媒介可導出樹與二叉樹之間的一一對應關系。

森林和二叉樹的轉換

由樹的二叉連結清單表示定義知道:任何一棵和樹對應的二叉樹的右子樹必空。若将森林中第二棵樹的根結點看成第一棵樹的根結點的兄弟,如此重複……則可以導出森林和二叉樹的對應關系。

樹和二叉樹的轉換

樹與森林的存儲、周遊和樹與森林的轉換

使用孩子兄弟表示法來轉換,土辦法:可以把有同一個雙親結點的各個孩子結點有虛線串起來,把每層的每個結點分支從左到右除去第一個外,其餘都剪掉,則剩餘的圖(包括虛線)就是二叉樹。詳細過程如下:

樹與森林的存儲、周遊和樹與森林的轉換

樹和森林的周遊

隻有兩種,森林得失先序和中序,樹的是先跟和後跟

樹的周遊

先根周遊:(二叉樹的先序周遊)

        先通路根結點,

        然後依次先根周遊根的每棵子樹。

樹與森林的存儲、周遊和樹與森林的轉換

先根周遊序列,對應二叉樹先序周遊

樹與森林的存儲、周遊和樹與森林的轉換

後根周遊:(二叉樹的中序周遊)

        後根通路根的每棵子樹,

        然後通路根結點。

後根周遊序列,對應二叉樹的中序周遊

樹與森林的存儲、周遊和樹與森林的轉換

森林的周遊:

先序

  1.通路森林中第一棵樹的根結點;

  2.先序周遊第一棵樹中根結點的子樹森林;

  3.先序周遊除去第一棵樹之後剩餘的樹構成的森林.

樹與森林的存儲、周遊和樹與森林的轉換

先序周遊序列

樹與森林的存儲、周遊和樹與森林的轉換

中序

  1.中序周遊第一棵樹中根結點的子樹森林;

  2.通路森林中第一棵樹的根結點;  

  3.中序周遊除去第一棵樹之後剩餘的樹構成的森林.

中序周遊序列

樹與森林的存儲、周遊和樹與森林的轉換

辛苦的勞動,轉載請注明出處,謝謝……

http://www.cnblogs.com/kubixuesheng/p/4391381.html