畫(huà)出該二叉樹(shù)的順序存儲(chǔ)結(jié)構(gòu) 怎么將二叉樹(shù)順序存儲(chǔ)結(jié)構(gòu)圖轉(zhuǎn)化為二叉樹(shù)結(jié)構(gòu)呢?
怎么將二叉樹(shù)順序存儲(chǔ)結(jié)構(gòu)圖轉(zhuǎn)化為二叉樹(shù)結(jié)構(gòu)呢?。存儲(chǔ)結(jié)構(gòu)值為:假設(shè)節(jié)點(diǎn)在數(shù)組中的位置為I,則其左子位置為2I,右子位置為2I 1。(I從1開(kāi)始)。所以您只需要?jiǎng)?chuàng)建一個(gè)數(shù)組,從鏈?zhǔn)酱鎯?chǔ)的根節(jié)點(diǎn)開(kāi)始,按中
怎么將二叉樹(shù)順序存儲(chǔ)結(jié)構(gòu)圖轉(zhuǎn)化為二叉樹(shù)結(jié)構(gòu)呢?
。存儲(chǔ)結(jié)構(gòu)值為:假設(shè)節(jié)點(diǎn)在數(shù)組中的位置為I,則其左子位置為2I,右子位置為2I 1。(I從1開(kāi)始)。所以您只需要?jiǎng)?chuàng)建一個(gè)數(shù)組,從鏈?zhǔn)酱鎯?chǔ)的根節(jié)點(diǎn)開(kāi)始,按中間順序遍歷樹(shù),然后按中間順序存儲(chǔ)在數(shù)組中。這樣就可以改變順序存儲(chǔ)結(jié)構(gòu)。你可以查看相關(guān)的遍歷信息,按遍歷的順序即訪(fǎng)問(wèn)的順序是左子根右子。希望能對(duì)你有所幫助。
C語(yǔ)言中.二叉樹(shù)的順序存儲(chǔ)結(jié)構(gòu)和二叉鏈表,三叉鏈表存儲(chǔ)結(jié)構(gòu)各自的優(yōu)缺點(diǎn)及適用場(chǎng)合.以及2叉樹(shù)的順序儲(chǔ)存結(jié)?
鏈?zhǔn)浇Y(jié)構(gòu)的優(yōu)點(diǎn)是易于解決。二進(jìn)制列表的缺點(diǎn)是結(jié)構(gòu)開(kāi)銷(xiāo)隨著數(shù)據(jù)結(jié)構(gòu)的大小而增加(特別是葉節(jié)點(diǎn)有兩個(gè)空值,即丟失2*sizeof(ElemType*)
線(xiàn)性結(jié)構(gòu)的優(yōu)點(diǎn)是沒(méi)有結(jié)構(gòu)開(kāi)銷(xiāo)。缺點(diǎn)是不方便插入和刪除?
試用情況的估計(jì)取決于問(wèn)題的大小,即空間復(fù)雜度和時(shí)間復(fù)雜度
兩者的相互轉(zhuǎn)換非常簡(jiǎn)單,只需了解在順序存儲(chǔ)中:
父節(jié)點(diǎn)(currentpos)=(currentpos-1)/2當(dāng)前節(jié)點(diǎn),取下限
左(currentpos)=2*currentpos 1
右(currentpos)=2*currentpos 2
左brother=[currentpos-1
右brother=currentpos 1
轉(zhuǎn)換時(shí),只需將鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)的數(shù)據(jù)字段的數(shù)據(jù)復(fù)制到順序存儲(chǔ)結(jié)構(gòu)的相應(yīng)位置即可
二叉樹(shù)的順序存儲(chǔ)結(jié)構(gòu)最適合于完全二叉樹(shù),因?yàn)槿~節(jié)點(diǎn)位于最底層的兩層,而且它們之間沒(méi)有空格
這種結(jié)構(gòu)是復(fù)制二叉樹(shù)的所有節(jié)點(diǎn),按照一定的順序,存儲(chǔ)在一個(gè)連續(xù)的存儲(chǔ)單元中。因此,必須將節(jié)點(diǎn)排列成適當(dāng)?shù)木€(xiàn)性序列,使節(jié)點(diǎn)在序列中的對(duì)應(yīng)位置能夠反映節(jié)點(diǎn)之間的邏輯關(guān)系。這種結(jié)構(gòu)特別適用于幾乎完全的二叉樹(shù)。在一個(gè)具有n個(gè)節(jié)點(diǎn)的近似完全二叉樹(shù)中,通過(guò)對(duì)所有節(jié)點(diǎn)從根、從上層到下層、從左到右逐層進(jìn)行編號(hào),可以得到一個(gè)能反映整個(gè)二叉樹(shù)結(jié)構(gòu)的線(xiàn)性序列