免費開始練習
高考申論題 115年 [資訊處理] 資料結構

第 鿪 題

📖 題組:
給定一棵二元搜尋樹(binary search tree),且該樹同時也是一棵 AVL 樹。 樹的節點在 C 語言中宣告如下: ```c typedef struct Node { int key; // 節點的鍵值,所有節點的鍵值皆互不相同 int size; // 以該節點為根的子樹節點總數 (包含自己) struct Node *left; // 指向左子節點 struct Node *right; // 指向右子節點 } Node; ``` 並定義以下函式: `int size (Node *node)`: 若傳入的 node 為 NULL,則回傳 0;否則回傳 node -> size。 `int count_less_equal (Node *node, int val)`: 回傳以 node 為根的子樹中,所有鍵值小於等於 val 的節點總數。 `Node* select (Node *node, int r)`: 回傳以 node 為根的子樹中,第 r 小的節點指標,r 從 1 開始算。 `Node* greater_k_smallest (Node *root, int val, int k)`: 找出以 root 為根的整棵樹中,所有鍵值大於 val 的節點裡,第 k 小的節點,k 從 1 開始算。若第 k 小的節點不存在,則回傳 NULL。
下圖為一棵包含 5 個節點且滿足 AVL 平衡特性的二元搜尋樹,圖中顯示每個節點的鍵值。若將鍵值為 70 的新節點插入此樹,為保持 AVL 樹的平衡,會觸發旋轉。請畫出旋轉後的樹狀結構圖。除新插入的節點 70 外,若原有節點的 size 欄位值在旋轉後發生改變,請在旋轉後的圖中,於該節點旁標示其新的 size 欄位值。(5 分)
題目圖片
📝 此題為申論題

思路引導 VIP

考查 AVL 樹的插入與旋轉(Double Rotation)。

  1. 插入 70 的位置:大於 50(右),小於 80(左),大於 60(右)。因此 70 將成為 60 的右子節點。
🤖
AI 詳解 AI 專屬家教

【考點分析】 AVL 樹的插入、平衡判定(Balance Factor)以及 Right-Left (RL) 雙旋轉操作,結合節點子樹大小 (size) 屬性的更新。 【理論/法規依據】

▼ 還有更多解析內容

🏷️ 相關主題

樹狀資料結構:原理、演算法與應用
查看更多「[資訊處理] 資料結構」的主題分類考古題

📝 同份考卷的其他題目

查看 115年[資訊處理] 資料結構 全題