#44378: C++詳解


toseanlin@gmail.com (Dr. SeanXD)

學校 : 康橋雙語學校
編號 : 158065
來源 : [24.147.249.5]
最後登入時間 :
2024-11-30 22:22:32
c126. 00536 - Tree Recovery -- UVa536 | From: [24.147.249.5] | 發表日期 : 2024-12-01 09:28

前序的順序是:根、左、右

中序的順序是:左、根、右

使用遞迴的方式,將每次的根設置為前序字串的第一個字元,並且在中序字串中使用 For迴圈 尋找根,找到之後要再次呼叫函式,分別是左邊和右邊。

左邊:將前序的字串從位置 1 往右邊切 i 個字元,代表這就是左邊的資料。將中序從 0 往右切 i 個字元。如果根在第 0 個位置則不用呼叫左邊的函式了。

右邊:將前序的字串從位置 i+1 往右邊切 前序.length()-i-1 個字元。將中序從位置 i+1 往右邊切 前序.length()-i-1 個字元。如果根不在中序的最後一個位置,則不用呼叫。

每次函式呼叫完左右邊之後都要輸出這次的根。

 

範例程式碼

 
ZeroJudge Forum