小藍在學習二叉樹的遍歷時,發(fā)現(xiàn)前序遍歷、中序遍歷和后序遍歷這三種遍歷方式都不能很好反映出節(jié)點間的父子關系,于是他自創(chuàng)了一種新的遍歷方式——“小藍遍歷”。其遍歷的順序如下:
(a)訪問根節(jié)點;(b)遍歷左子樹(若存在);(c)遍歷右子樹(若存在);(d)再次訪問根節(jié)點。
可以發(fā)現(xiàn)在“小藍遍歷”中,二叉樹的每個節(jié)點都被訪問了2次。例如,圖a中二叉樹的“小藍遍歷”為1-2-4-7-7-8-8-4-5-5-2-3-6-6-3-1。

請根據(jù)此背景,回答下列問題:
(1)圖a中以節(jié)點2為根的子樹所對應的“小藍遍歷”為 2-4-7-7-8-8-4-5-5-22-4-7-7-8-8-4-5-5-2。
(2)小藍發(fā)現(xiàn)“小藍遍歷”可以直觀反映出節(jié)點的父子關系:在遍歷過程中子節(jié)點第一次訪問時間要晚于父節(jié)點,而第二次訪問時間要早于父節(jié)點。于是小藍利用這種遍歷方式輸入一棵二叉樹,并編程求解任意兩個節(jié)點之間的路徑。如圖b所示,節(jié)點5到節(jié)點8的路徑為5-2-4-8。
具體求解的過程如下:
a.分別求從根節(jié)點到兩個節(jié)點的路徑序列。圖b中到5的路徑序列為[1,2,5],到8的路徑序列為[1,2,4,8]。
b.從前往后刪除兩個序列的相同部分,并記錄最后一個相同節(jié)點。上述例子中兩個序列的相同部分為[1,2],最后一個相同節(jié)點為2。
c.將剩余部分和最后一個相同節(jié)點按順序拼接起來。上述例子中[5]、[2]和[4,8]拼接得到[5,2,4,8]。
請根據(jù)算法描述在橫線處填入合適的代碼。

(3)加框處代碼有誤,請予以改正。
(4)若輸入的二叉樹節(jié)點總數(shù)為n,則單次執(zhí)行path( )函數(shù)的時間復雜度為 BB(單選,填字母)。
A.0(1)
B.0(n)
C.0(n2)
D.0(2n)
【考點】程序設計實例.
【答案】2-4-7-7-8-8-4-5-5-2;B
【解答】
【點評】
聲明:本試題解析著作權屬菁優(yōu)網(wǎng)所有,未經(jīng)書面同意,不得復制發(fā)布。
發(fā)布:2024/6/27 10:35:59組卷:3引用:1難度:0.3
相似題
-
1.公因數(shù)只有1的兩個非零自然數(shù),叫做互質(zhì)自然數(shù)。王老師編寫了一個Python程序,程序的功能是隨機產(chǎn)生5個1到20之間的整數(shù),找出其中和最大的互質(zhì)數(shù)對。程序運行界面如圖所示:
實現(xiàn)該功能的程序代碼如下:
請回答下列問題:
(1)尋找互質(zhì)數(shù)對的算法屬于
(2)如產(chǎn)生的 5 個隨機數(shù)是[20,16,12,6,14],則程序輸出內(nèi)容是
(3)要實現(xiàn)程序的功能,請完善橫線處的代碼。發(fā)布:2024/12/20 18:0:1組卷:3引用:1難度:0.4 -
2.小紅用Python編寫程序畫出了如圖形,在第三行下劃線處應該填寫( )
發(fā)布:2024/12/18 11:0:1組卷:2引用:1難度:0.6 -
3.【加試題】小丫覺得回文字符串太優(yōu)美了(回文字符串是指順讀和倒讀都一樣的字符串,如“123321”),為此編寫了VB 程序。程序運行時,單擊按鈕Command1 后,根據(jù)文本框Text1 中輸入的內(nèi)容判斷并輸出是不是回文串。實現(xiàn)上述功能的VB 代碼如下。
Private Sub Command1_Click( ?。?br />Dim s As String,f As Boolean,L As Integer
s=Text1.Text
j=Len(s)
i=1
Do while?、?/bdo>
i=i+1
j=j-1
Loop
If?、?/bdo>Then Print“是回文串“Else Print“不是回文串“
End Sub
在畫線處填入合適代碼,使程序能正常運行。
①
②發(fā)布:2024/12/19 14:30:2組卷:0引用:1難度:0.4