2012年4月7日 星期六

【資料結構】二元樹表示法


階層式方式(level-ordering)解法:
題目:

已知二元樹可以用一維陣列來儲存。請依此概念設計一方法,儲存以下三元樹於如
下之一維陣列中。








解答:
運用※隱含式陣列表示法(Implicit array)
1.Root為A[0]
2.A[i]的父節點[A((i-1)/3)]
3.A[i]3個子節點A[3i+1]、A[3i+2]、A[3i+3]


Index
0
1
2
3
4
5
6
7
8
9
10
11
12
data
A
B
C
D
E
-
F
-
G
-
H
I
J
========================================================================



串列表示法:
struct treenode
{
datatype data      (節點名稱/資料)
struct treenode    lchild,  rchild;      (無父指標)
                       左指標  右指標
}

陣列表示法:(將二元樹存在一維陣列中)

(1)樹根:A[1](此條件要先確立)
(2)節點A[i]的
父節點:

左子節點:

右子節點:

EX:

※隱含式陣列表示法(Implicit array):
將node加以編號儲存在陣列中,能以公式推導出tree中父子節點關係(使用level-ordering層次追蹤)
i=5,
A[5]的parent==A[2]
A[5]的左子node=A[2*5]=A[10]
A[5]的右子node=A[2*5+1]=A[11]


參考:
1.
http://wwwc.moex.gov.tw/ExamQuesFiles/Question/100/100120_35850.pdf
2.
http://www.get.com.tw/goldensun/exam/answer/100KP/PDF-K/K38.pdf



沒有留言:

張貼留言

如果久久沒有反應,請直接寄信
應該是我不太會用google blogger 導致有留言過久未處理><
實在深感抱歉..