二叉樹是每個(gè)結(jié)點(diǎn)最多有兩個(gè)子樹的樹結(jié)構(gòu),如值為9的結(jié)點(diǎn)有兩個(gè)子樹6和8,值為6的結(jié)點(diǎn)有兩個(gè)子樹5和3.若設(shè)二叉樹的深度為h,則除第h層外,其它各層(1~h-1)的結(jié)點(diǎn)數(shù)都達(dá)到最大個(gè)數(shù),第h層所有的結(jié)點(diǎn)都連續(xù)集中在最左邊,這就是完全二叉樹。現(xiàn)要構(gòu)造大根堆,堆是一棵順序存儲(chǔ)的完全二叉樹,大根堆又是一種特殊的堆,它的特征是每個(gè)雙親結(jié)點(diǎn)的值都不小于其孩子結(jié)點(diǎn)的值。如下圖所示,值為9的結(jié)點(diǎn)是6和8的雙親結(jié)點(diǎn),而6和8分別是9的左孩子和右孩子;同理,6是5和3的雙親結(jié)點(diǎn),而5和3分別是6的左孩子和右孩子……
假如我們1{J數(shù)組表示上述大根堆:
a(1) | a(2) | a(3) | a(4) | a(5) | a(6) | a(7) | a(8) | a(9) |
9 | 6 | 8 | 5 | 3 | 4 | 7 | 2 | 1 |
數(shù)組存儲(chǔ)為:
a(2) | a(3) | a(4) | a(5) | a(6) | a(7) | a(8) | a(9) | a(10) |
6 | 8 | 5 | 3 | 4 | 7 | 2 | 1 | 8 |
第一步:因?yàn)閍(10)大于它的雙親結(jié)點(diǎn)a(5),故需交換a(10)和a(5)的值;
數(shù)組存儲(chǔ)為:
第二步:因?yàn)閍(5)大于它的雙親結(jié)點(diǎn)a(2),故需交換a(5)和a(2)(t)值;
a(2) | a(3) | a(4) | a(5) | a(6) | a(7) | a(8) | a(9) | a(10) |
6 | 8 | 5 | 8 | 4 | 7 | 2 | 1 | 3 |
數(shù)組存儲(chǔ)為:
a(1) | a(2) | a(3) | a(4) | a(5) | a(6) | a(7) | a(8) | a(9) | a(10) |
9 | 8 | 8 | 5 | 6 | 4 | 7 | 2 | 1 | 3 |
(1)若在第16題圖中增加值為4的新元素,則元素4將被存儲(chǔ)在數(shù)組元素
a(5)
a(5)
中。(2)小段為此編制一VB程序:在文本框Tcxt1中輸入結(jié)點(diǎn)個(gè)數(shù)n,單擊命令按鈕Command1,隨機(jī)產(chǎn)生n個(gè)[1,99]的整數(shù)作為結(jié)點(diǎn)值,并由此構(gòu)造大根堆,結(jié)果顯示在列表框List1中,程序運(yùn)行界面如圖所示。
實(shí)現(xiàn)上述功能的程序代碼如下。請(qǐng)?jiān)跈M線處填入合適的代碼。
①
a(p)>a(f)
a(p)>a(f)
②
k=k/2或k=k\2
k=k/2或k=k\2
③
2^i
2^i
【答案】a(5);a(p)>a(f);k=k/2或k=k\2;2^i
【解答】
【點(diǎn)評(píng)】
聲明:本試題解析著作權(quán)屬菁優(yōu)網(wǎng)所有,未經(jīng)書面同意,不得復(fù)制發(fā)布。
發(fā)布:2024/6/27 10:35:59組卷:0引用:1難度:0.3
相似題
-
1.有如下VB程序段:
執(zhí)行該程序段后,變量c的值是( )發(fā)布:2024/12/16 5:0:1組卷:1引用:2難度:0.3 -
2.小明用python語言中對(duì)大小為100*100像素的圖像“上.jpg”(如圖所示)進(jìn)行簡單處理,部分代碼如圖:
程序執(zhí)行后的圖像效果是( ?。?/h2>發(fā)布:2024/12/20 9:30:2組卷:3引用:5難度:0.4 -
3.由大寫字母組成的長度相同的兩個(gè)字符串s1和s2,檢測各字母的數(shù)量,如“ABDAC”與“AABCD”所含字母數(shù)量一樣,與“AABBC”所含字母數(shù)量不一樣。實(shí)現(xiàn)該功能的VB程序段如下:
填空處的代碼可以由以下部分組成:
①Text2.Text ②val(Text2.Text) ③b(a)=b(a)+1 ④b(a)=b(a)-1 ⑤b(i)<>0⑥b(i)=0
代碼順序正確的是( ?。?/h2>發(fā)布:2024/12/16 9:30:1組卷:3引用:3難度:0.4
把好題分享給你的好友吧~~