樹的存儲結(jié)構(gòu)
(1) 雙親表示法邻遏,每個(gè)結(jié)點(diǎn)設(shè)置指針域指向其雙親杂腰,根節(jié)點(diǎn)指針域?yàn)榭栈?1
(可以快速找到雙親結(jié)點(diǎn)森渐,找結(jié)點(diǎn)的孩子結(jié)點(diǎn)需要遍歷整個(gè)結(jié)構(gòu)</br>
(2) 孩子表示法
I. 定長結(jié)點(diǎn)
即樹中每個(gè)結(jié)點(diǎn)均按樹的度k來設(shè)置指針。
n個(gè)結(jié)點(diǎn)的樹一共有n*k個(gè)指針域臊泰,而樹中只有n-1條邊蛉加,故樹中的空指針數(shù)目為
k*n-(n-1)=n*(k-1)+1(k越大,浪費(fèi)的空間越多)缸逃。
II. 不定長結(jié)點(diǎn)
即樹中每個(gè)結(jié)點(diǎn)按本結(jié)點(diǎn)的度來設(shè)置指針數(shù)七婴,并在結(jié)點(diǎn)中增設(shè)一個(gè)度數(shù)域degree
指出該結(jié)點(diǎn)包含的指針數(shù)。
各結(jié)點(diǎn)不等長察滑,雖然節(jié)省了空間打厘,但是給運(yùn)算帶來不便,需要維護(hù)多個(gè)結(jié)點(diǎn)贺辰。
III. 孩子鏈表表示法
為樹中每個(gè)結(jié)點(diǎn)設(shè)置一個(gè)孩子鏈表户盯,并將這些結(jié)點(diǎn)及相應(yīng)的孩子鏈表的頭指針存放在一個(gè)向量中嵌施。
此法最佳
Paste_Image.png
(3) 孩子兄弟表示法
又稱二叉樹表示法,指針域分為兩部分莽鸭,第一個(gè)孩子結(jié)點(diǎn)和下一兄弟結(jié)點(diǎn)
Paste_Image.png
Paste_Image.png