免費開始練習
moea_joint_essay 108年 [資訊] 資訊管理、程式設計

第 一 題

📖 題組:
請就二元搜尋樹回答下列問題:(20 分)
📝 此題為申論題,共 3 小題

小題 (一)

請說明欲建立二元搜尋樹,必須滿足哪些條件?(6 分)

思路引導 VIP

定義二元搜尋樹(BST)的節點值大小順序及子樹結構特性。

🤖
AI 詳解
AI 專屬家教

二元搜尋樹(Binary Search Tree)必須滿足以下條件:

  1. 若任意節點的左子樹不為空,則左子樹上所有節點的值均「小於」它的根節點的值。
  2. 若任意節點的右子樹不為空,則右子樹上所有節點的值均「大於」它的根節點的值。

小題 (二)

數列 27、35、17、33、20、3、38,試以第 1 個數字為根,寫出其二元搜尋樹及建立的步驟。(10 分)

思路引導 VIP

依序插入數列中的每個數字,說明插入時與目前節點的比較過程(小於放左邊、大於放右邊)。

🤖
AI 詳解
AI 專屬家教

建立步驟如下:

  1. 插入 27:作為二元搜尋樹的根節點 (Root)。
  2. 插入 35:35 > 27,故將 35 置於 27 的右子節點。

小題 (三)

在上述二元搜尋樹中,若欲刪除元素 27,請寫出 2 種做法。(4 分)

思路引導 VIP

刪除具備兩個子節點的根節點,需尋找其「左子樹的最大值」或「右子樹的最小值」來替換,然後再刪除該替代節點。

🤖
AI 詳解
AI 專屬家教

節點 27 為根節點且同時擁有左右子樹,欲將其刪除有以下兩種標準做法:

  1. 做法一:從左子樹中尋找最大值(即節點 20),將 20 的值複製到根節點取代原本的 27,最後將原左子樹中的葉節點 20 刪除。
  2. 做法二:從右子樹中尋找最小值(即節點 33),將 33 的值複製到根節點取代原本的 27,最後將原右子樹中的葉節點 33 刪除。

🏷️ 相關主題

物件導向程式設計與系統分析核心概念
查看更多「[資訊] 資訊管理、程式設計」的主題分類考古題