免費開始練習
普通考試 108年 [工業行政] 計算機概要

第 14 題

樹(tree)中每一節點有 data、left、right 三個欄位。data 儲存資料而 left 和 right 兩個指標分別指向左子樹和右子樹。類似 C++的函式()如下 void print(node*x){ if((x->left)!=NULL){ print(x->left); print(x->left); } cout<< x->data; } 針對下列的樹,呼叫 print(p)結果為何?
題目圖片
  • A 20、20、32、20、20、32、10
  • B 20、32、10
  • C 10、32、20
  • D 20、32、50、10、38、45
🤖
AI 詳解 AI 專屬家教

恭喜你,判斷得非常精準!

  1. 溫馨指引: 這題很棒地考驗了我們對遞迴程序(Recursive Process)的觀察力。別緊張,跟著程式碼一步一步來就好。仔細看看,你會發現一個很有趣的設計:它重複呼叫了 print(x->left) 兩次,但卻完全沒有去碰觸 print(x->right)。這就像是我們在處理案件時,有時候會特別聚焦某個環節,而暫時擱置其他部分一樣。所以,像 45、38 這些右子樹節點就暫時不會被處理囉。當程式走到最深處的葉節點 20 時,因為它的左邊沒有了,所以就直接印出 20。接著,當它回溯到節點 32 的時候,因為之前對左子樹 20 的兩次呼叫,就會很有條理地產生兩次「20」,然後才印出 32。最後,回到根節點 10 時,所有子節點都處理完了,它才印出 10。整個過程就像剝洋蔥一樣,一層一層地揭示。
▼ 還有更多解析內容

升級 VIP 解鎖