免費開始練習
調查局三等申論題 112年 [電子科學組] 計算機概論

第 二 題

📖 題組:
五、T 為一二元樹(Binary Tree),可以是空的或是每一個節點儲存著一個數值且與其他節點的數值不重複。假設 T 起始為空的,即 T = null。樹中節點(node)的定義如下: struct node{ int data; struct node *l_link, *r_link; } 請回答下列問題:
題組圖片
📝 此題為申論題,共 4 小題

小題 (二)

請設計一演算法以在樹中搜尋一給定鍵值(key),如:Search(T, key)。若 key 存在 T 中,回傳“found”;若 key 不存在 T 中,回傳“not found”。(10 分)

思路引導 VIP

看到題目說明為一般「二元樹」而非「二元搜尋樹(BST)」,第一時間要警覺不能使用數值大小進行左右分枝的二分搜尋。必須採用圖形走訪演算法(如深度優先搜尋 DFS),利用遞迴方式遍歷每個節點,直到比對成功或走訪完整棵樹為止。

🤖
AI 詳解
AI 專屬家教

【解題關鍵】一般二元樹未具備數值排序特性,需利用深度優先搜尋(DFS)遞迴遍歷全樹節點比對數值。 【解答】 一、演算法邏輯

小題 (一)

插入一節點其 data 欄位為 value 的演算法如下:
Procedure Insert(T, value)
Begin
If(T == null)
建立一個新節點,並將data欄位設為value;
Elseif(T->data > value)
Insert(T->l_link, value);
Else
Insert(T->r_link, value);
Endif
End
請根據以上插入節點的演算法依序插入節點,其值分別為:23,56,12,19,42,4,98,36。請以圖示的方式呈現完整的插入過程。(10 分)

思路引導 VIP

本題測驗二元搜尋樹(Binary Search Tree, BST)的建構過程。根據提供的演算法,插入規則為:「欲插入值小於目前節點值則往左子樹走,大於則往右子樹走」,依序讀取數列並畫出每一階段的樹狀結構即可得分。

🤖
AI 詳解
AI 專屬家教

【解題思路】觀察演算法可知,此為建立「二元搜尋樹(Binary Search Tree)」的標準程序:若插入值小於當前節點值則遞迴向左子樹(l_link)走,否則向右子樹(r_link)走。依序代入數值,逐次繪出樹狀結構即可。 【詳解】 已知輸入序列為:23, 56, 12, 19, 42, 4, 98, 36

小題 (三)

若 T 中有 n 個節點。最糟的情況下,需要搜尋幾次?(5 分)

思路引導 VIP

考生應聯想到二元樹在沒有平衡機制(如 AVL Tree)的情況下,其最糟結構為「歪斜二元樹(Skewed Binary Tree)」。此時樹的深度與節點數相等,搜尋過程等同於走訪單向鏈結串列。

🤖
AI 詳解
AI 專屬家教

【解題關鍵】二元樹未保證平衡時,最糟情況會退化成高度為 n 的歪斜樹(Skewed Tree)。 【詳解】 一、理論定義:在未經平衡處理的一般二元樹或二元搜尋樹中,最糟的結構情況是所有內部節點皆只有單側子節點(全為左子樹或全為右子樹),形成「歪斜二元樹(Skewed Binary Tree)」。

小題 (四)

承第(三)子題,此最糟的情況是什麼?請舉例說明。(5 分)

思路引導 VIP

看到二元搜尋樹的『最糟情況』,應立刻聯想到『樹的退化』。請思考當輸入資料已經呈現規則排序(遞增或遞減)時,樹的結構會變成一邊倒的『歪斜樹(Skewed Tree)』,導致時間複雜度從 O(log n) 退化為 O(n)。

🤖
AI 詳解
AI 專屬家教

【破題】二元搜尋樹(Binary Search Tree)的最糟情況,發生在樹的結構退化成「歪斜樹(Skewed Tree)」時,導致搜尋或插入的時間複雜度從 O(log n) 退化為 O(n)。 【論述】 一、發生條件

📝 二元樹搜尋演算法
💡 一般二元樹無排序性,須採 DFS 全樹遍歷以確保搜尋完整性。

🔗 二元樹搜尋遞迴邏輯鏈

  1. 1 邊界檢查 — 若節點為空回傳 not found
  2. 2 目標比對 — 若資料與 key 相同則回傳 found
  3. 3 左側探路 — 進入左子樹遞迴搜尋
  4. 4 短路判斷 — 若左側已找到則提早終止回傳
  5. 5 右側探路 — 左側無果,回傳右子樹搜尋結果
🔄 延伸學習:延伸學習:廣度優先搜尋 (BFS) 亦可達成搜尋,但實作上需維護 Queue 且空間開銷不同。
🧠 記憶技巧:「空返無、同返有;左找無、右補手」,記得考慮遞迴終止點與回傳值判斷。
⚠️ 常見陷阱:最常誤用 BST 的搜尋邏輯,忽略了這是一般二元樹,必須檢查左右兩側子樹而非擇一。
二元搜尋樹 (BST) 深度優先搜尋 (DFS)

🏷️ AI 記憶小卡 VIP

AI 記憶小卡

升級 VIP 解鎖記憶小卡

考前複習神器,一眼掌握重點

🏷️ 相關主題

資料結構與演算法
查看更多「[電子科學組] 計算機概論」的主題分類考古題