二叉樹是一種每個(gè)節(jié)點(diǎn)最多有兩個(gè)子樹的結(jié)構(gòu)。有一種特殊的二叉樹稱為完全二叉樹,其特點(diǎn)是樹中的結(jié)點(diǎn)按從上至下、從左到右的順序進(jìn)行存儲(chǔ),每個(gè)根節(jié)點(diǎn)連接2個(gè)子節(jié)點(diǎn),直至存儲(chǔ)完畢。如圖a為完全二叉樹,而圖b則不是完全二叉樹。
某學(xué)校學(xué)生參加模擬商賽活動(dòng),所有參賽隊(duì)員需組成一個(gè)模擬公司,該公司組織架構(gòu)是一個(gè)完全二叉樹,如圖c所示。為了合理分配每位參賽隊(duì)員在公司組織架構(gòu)中的位置,公司的組成規(guī)則如下:
1)公司的所有成員以能力值確定最終的崗位層次,能力值最高的位于第1層,即任命為董事長(zhǎng),依次向下。
2)每個(gè)崗位的下屬能力值不超過自己的上司,如開發(fā)經(jīng)理的能力值不能超過技術(shù)總監(jiān)。
3)兩個(gè)不同的類型的同級(jí)崗位之間能力值沒有相關(guān)性,即產(chǎn)品經(jīng)理與咨詢師屬于兩個(gè)不同類型的同級(jí)崗位,沒有相關(guān)性。如圖d所示,數(shù)組a(1)~a(6)依次存儲(chǔ)了圖c中所有崗位對(duì)應(yīng)的員工能力值。
若此時(shí)有新隊(duì)員進(jìn)入公司組織,在圖d所示的完全二叉樹中再增加一個(gè)值為a(10)=7的新元素構(gòu)建新二叉樹的方法如下:
第一步:判斷新節(jié)點(diǎn)位置,a(10)應(yīng)放在節(jié)點(diǎn)a(5)下方;
第二步:因a(10)>a(5),交換a(10)和a(5)的值;a(5)>a(2),再次交換a(2)和a(5)的值第三步:因a(2)<a(1),無需交換,新元素已放入正確位置,構(gòu)建成新二叉樹,上移結(jié)束。
目前對(duì)所有隊(duì)員進(jìn)行了三項(xiàng)測(cè)試,得到三項(xiàng)成績(jī)之和作為能力值,根據(jù)能力值構(gòu)建如上規(guī)則的完全二叉樹,再根據(jù)二叉樹對(duì)所有隊(duì)員進(jìn)行崗位匹配。程序運(yùn)行時(shí),讀取所有隊(duì)員三項(xiàng)測(cè)試成績(jī)保存在變量s中,將每位員工的姓名和各項(xiàng)測(cè)試成績(jī)得分顯示在list1中,單擊“計(jì)算”按鈕,對(duì)數(shù)據(jù)進(jìn)行統(tǒng)計(jì)分析,求出每位員工能力值,并由此構(gòu)造二叉樹,結(jié)果顯示在列表框 List2中,程序運(yùn)行界面如圖e所示。
(1)若在圖d中增加兩個(gè)新隊(duì)員,能力值分別為a(10)=8,a(11)=6則隊(duì)員、a(11)=6將被存儲(chǔ)在數(shù)組元素 中。
(2)實(shí)現(xiàn)算法的VB程序如下,請(qǐng)?jiān)诔绦驒M線處填入合適的代碼。
【考點(diǎn)】對(duì)象的屬性、方法和事件;二叉樹的基本操作.
【答案】見試題解答內(nèi)容
【解答】
【點(diǎn)評(píng)】
聲明:本試題解析著作權(quán)屬菁優(yōu)網(wǎng)所有,未經(jīng)書面同意,不得復(fù)制發(fā)布。
發(fā)布:2024/4/23 12:26:7組卷:0引用:1難度:0.9
相似題
-
1.如圖VB應(yīng)用程序界面所示,下列關(guān)于類與對(duì)象的說法正確的是( ?。?br />
發(fā)布:2024/11/3 16:0:2組卷:5引用:2難度:0.7 -
2.編寫VB程序,實(shí)現(xiàn)如下功能:對(duì)于任意一個(gè)正整數(shù),如果是奇數(shù),則乘3加1,如果是偶數(shù),則除以2,得到的結(jié)果再按照上述規(guī)則重復(fù)處理,最終總能夠得到1.如,假定初始整數(shù)為5,計(jì)算過程分別為16、8、4,、2、1.
程序要求輸入一個(gè)整數(shù)到Text1,單擊命令按鈕Command1,將經(jīng)過處理得到1的過程輸出到List1上面,運(yùn)行效果如圖2所示.
(1)如果將窗體左上角標(biāo)題“Form1”改為“角谷猜想”,可將Form1的
(2)為實(shí)現(xiàn)上述功能,請(qǐng)?jiān)跈M線處填入合適代碼.
Private Sub Command1_Click ( )
Dim x As Long
x=Val(Text1.Text)'將text1中的內(nèi)容賦值給x
Do While x<>1
If
x=x*3+1
Else'x為偶數(shù)的情況
x=
List1.AddItem“x=“& Str(x)'將x的變化添加到list1上
Loop
End Sub
橫線處①應(yīng)填入
(3)運(yùn)行程序是,發(fā)下如2圖所示錯(cuò)誤,原因可能是發(fā)布:2024/10/26 17:0:2組卷:7引用:1難度:0.1 -
3.日期判斷:從文本框Text1輸入一個(gè)8位數(shù)字表示的日期,其中第1到4位表示年(第1位確定不為零),第5到6位表示月,第7到8位表示日.單擊“判斷”按鈕,判斷該日期是否合法,將結(jié)果依次輸出到列表框List1.程序界面如下圖所示:
提示:年份值符合下列兩種情況之一的是閏年.
1.年份是4的倍數(shù),但不是100的倍數(shù);
2.年份是400的倍數(shù).
(1)觀察程序代碼,可知“判斷”按鈕的對(duì)象名為
(2)為實(shí)現(xiàn)上述功能,請(qǐng)?jiān)跈M線處填入合適的代碼.
Private Sub Judge_Click( )Dim riqi As String,st As String
Dim year As Integer,month As Integer,day As Integer
Dim rn As Boolean,hefa As Boolean
riqi=Text1.Text
year=Val(Mid(riqi,1,4))
month=Val(Mid(riqi,5,2))
day=①
st=Str(year)+“年“+Str(month)+“月“+Str(day)+“日“
rn=False‘用于判斷是否為閏年
If②
If year Mod 4=0And year Mod 100<>0Then rn=True
hefa=True‘用于判斷是否為合法日期
If month=0Or month>12Then hefa=False
If day=0Then hefa=False
If (month=1Or month=3Or month=5Or month=7Or’與下一行語句同行
month=8Or month=10Or month=12)And day>31Then hefa=False
If (month=4Or month=6Or month=9Or month=11)’與下一行語句同行
And day>30Then hefa=False
If ③
’第③處,判斷閏年2月的天數(shù)是否合法
If month=2And Rn=False And day>28Then hefa=False
If hefa=True Then st=st+“合法日期“Else st=st+“非法日期“
List1.AddItem st
End Sub.發(fā)布:2024/10/31 8:0:1組卷:8引用:0難度:0.1
把好題分享給你的好友吧~~