109 年 國立臺灣大學電機工程研究所丙組《資料結構(B)》
第 1 題
Consider a hash table with 13 slots. Suppose we use linear probing as the collision resolution strategy, where the i'th probe position (where i = 0, 1, 2, ...) for a key k is given by the function .
Suppose we insert the following 9 keys into the hash table in the exact sequence: 66, 4, 84, 91, 100, 72, 70, 37, 61. What is the index of the slot storing the key 61?
(A) 2
(B) 8
(C) 9
(D) 10
(E) None of above
登入後即可作答並保存紀錄。
核心觀念
本題考查雜湊表的「線性探測法(linear probing)」。
雜湊表共有 個槽位,索引為 至 。對鍵值 ,第 次探測的位置為:
其中:
- 第 次探測:先檢查
- 若該位置已被占用,則依序檢查下一格
- 探測到索引 後,會循環回索引
插入鍵值時,必須按照題目指定的順序進行,因為先前插入的資料會影響後續碰撞結果。
解題方法
依序計算每個鍵值的初始位置,遇到碰撞時採用線性探測。
| 插入順序 | 鍵值 | 初始位置 | 探測結果 | 最終位置 |
|---|---|---|---|---|
| 1 | 槽位 空 | |||
| 2 | 槽位 空 | |||
| 3 | 槽位 空 | |||
| 4 | 槽位 空 | |||
| 5 | 槽位 空 | |||
| 6 | 槽位 空 | |||
| 7 | 槽位 空 | |||
| 8 | 槽位 空 |
此時已占用的槽位為:
第 2 題
The worst case time complexity of constructing a binary heap from an unordered array of n items is
(A)
(B)
(C)
(D)
(E)
登入後即可作答並保存紀錄。
核心觀念
本題考查「由未排序陣列建立 Binary Heap」的時間複雜度。常見建堆方法有兩種:
- 逐一插入元素:每次插入最多需上浮 ,總複雜度為 。
- Floyd bottom-up 建堆法:從最後一個非葉節點開始,依序向前執行下沉(heapify),總複雜度可達 。
題目問的是最佳的標準建堆方法之最壞情況複雜度,因此應採用 Floyd bottom-up 建堆法。
解題方法:Floyd bottom-up 建堆法
將陣列視為一棵近似完全二元樹。葉節點本身已符合 Heap 性質,因此只需從最後一個非葉節點開始,對每個節點執行下沉操作。
對高度為 的節點,下沉最多需移動 層,因此所需時間為 。
在完全二元樹中,高度為 的節點數量至多約為:
因此,所有節點進行 heapify 的總成本為:
整理得:
而級數
收斂為常數,因此:
此外,建立 Heap 至少必須讀取並處理所有 個元素,因此下界為 。綜合上下界:
所以其最壞情況時間複雜度為 。
選項分析
- (A) :正確
第 3 題
In a binary heap of size n, the worst case time complexity of one delete-min operation is
(A)
(B)
(C)
(D)
(E)
登入後即可作答並保存紀錄。
核心觀念
Binary heap 是一棵完全二元樹,並滿足 min-heap 性質:每個父節點的鍵值都小於或等於子節點。因此,最小值必定位於根節點。
Binary heap 的高度為
delete-min 必須移除根節點,並維持 heap 性質。
解題方法
執行一次 delete-min 的步驟如下:
- 移除根節點,也就是最小值。
- 將最後一個節點移到根的位置。
- 由根向下進行
sift-down,每次與較小的子節點交換,直到恢復 min-heap 性質。
每一層只需進行固定次數的比較與交換,因此每層耗時為 。最壞情況下,新根元素一路下沉至葉節點,最多經過 heap 高度 層:
若輸入排列使得替代根元素必須一路下沉,確實會經過 層,因此最壞情況為
選項分析
- (A) :錯誤。
移除根節點本身是常數時間,但將最後一個節點移至根後,可能需要一路向下調整,最多經過 層。
第 4 題
The worst case time complexity of one union operation upon two binary heaps of total size n is
(A)
(B)
(C)
(D)
(E)
登入後即可作答並保存紀錄。
核心觀念
本題考查二元堆積(binary heap)的合併(union)效率,以及「自底向上建堆」的時間複雜度。
二元堆積具有:
- 完全二元樹結構;
- 最大堆中每個父節點皆不小於子節點,最小堆則相反;
- 若共有 個元素,自底向上建堆的時間複雜度為 。
兩個二元堆積合併後,只需將兩者的元素放在同一個陣列中,再重新調整成一個合法的二元堆積。
解題方法
設兩個 binary heaps 的大小分別為 與 ,且
合併步驟如下:
- 將兩個 heap 的陣列直接串接,花費
- 對合併後陣列執行自底向上的
Build-Heap。
雖然單一節點的 heapify 最壞可能花費 ,但所有節點的總成本不是 。靠近樹葉的節點高度很低,只有少數節點具有較高高度,因此總和為
所以整個 union 操作的時間複雜度為
因此正確選項為 (D)。
選項分析
- (A) :錯誤。
兩個 heap 的所有元素必須被納入合併後的 heap。輸入規模為 ,至少需要處理這些元素,時間不可能固定為常數。
第 5 題
In a binomial heap of size n, the worst case time complexity of n consecutive insert operations is
(A)
(B)
(C)
(D)
(E)
登入後即可作答並保存紀錄。
核心觀念
二項堆(Binomial Heap)由數棵不同階數的二項樹組成,且每個階數至多一棵。對含有 個元素的二項堆而言,最多有
棵根節點。
插入一個元素時,會先建立一棵 二項樹,再與原有二項堆合併。若發生相同階數的二項樹,便需反覆合併並進位,因此單次插入的最壞時間複雜度為
解題方法
題目詢問的是 次連續插入操作的最壞情況。每次插入最多處理 個階數,因此逐次累加:
因此選擇
選項分析
- (A) :錯誤。
是在採用攤銷分析時,連續 次插入可得到的典型總成本;但題目問的是最壞情況時間複雜度,不能直接使用攤銷成本取代單次操作的最壞成本。
第 6 題
In a binomial heap of size n, the worst case time complexity of one insert operation is
(A)
(B)
(C)
(D)
(E)
登入後即可作答並保存紀錄。
核心觀念
二項堆(binomial heap)由不同階數的二項樹組成,且每個階數至多一棵。大小為 的二項樹稱為 ,其根節點度數為 。
二項堆的根串列至多包含
個根節點,因此根串列長度為 。
插入一個元素時,先建立一棵單節點二項樹 ,再將它與原二項堆合併。若原堆中已存在 ,兩棵 會合併成一棵 ;若又存在 ,則繼續合併成 ,形成類似二進位加法的進位鏈。
解題方法
將插入視為對二項堆進行一次「二進位進位」:
- 沒有 時,插入只需加入根串列,時間為 。
- 若已有 ,就合併成 。
- 若已有 ,插入後可能連續合併 次,直到形成 。
由於二項堆最多只有 種不同階數,因此最壞情況下最多進行 次二項樹合併。每次合併只需比較兩個根節點並調整指標,成本為 。
因此,一次插入的最壞時間複雜度為
例如,若目前根串列對應的階數狀態類似二進位數
插入新的 後,會產生連續進位:
最長進位鏈的長度與 同階。
選項分析
第 7 題
In a binomial heap of size n, the worst case time complexity of one find-min operation is
(A)
(B)
(C)
(D)
(E)
登入後即可作答並保存紀錄。
核心觀念
Binomial heap 由多棵 binomial tree 組成,且每種階數的 binomial tree 至多一棵。若 heap 大小為 ,其根串列中的樹數量最多為:
Binomial heap 的最小元素必定位於某棵 binomial tree 的根節點,因為每棵樹皆符合 min-heap 性質。因此,find-min 只需掃描所有根節點,找出鍵值最小者。
解題方法
逐一檢查根串列中的根節點:
- 取得根串列中所有 binomial tree 的根。
- 維護目前最小鍵值。
- 掃描最多 個根節點。
- 回傳其中鍵值最小的根。
因此:
故標準 binomial heap 未額外維護最小值指標時,find-min 的最壞時間複雜度為:
選項分析
- (A) :錯誤。
若實作額外維護指向最小根節點的指標,find-min才能達到 。
第 8 題
In a Fibonacci heap of size n, the worst case time complexity of one insert operation is
(A)
(B)
(C)
(D)
(E)
登入後即可作答並保存紀錄。
核心觀念
Fibonacci heap 的 insert 操作會:
- 建立一個新的樹節點。
- 將該節點直接加入根串列。
- 若新節點的鍵值小於目前最小值,更新最小值指標。
- 增加堆積中的節點數量。
插入時不需要進行合併(consolidation),也不需要調整樹高。因此,這些步驟都只需固定次數的指標操作。
需注意:Fibonacci heap 的 insert 不僅是攤銷時間 ,其單次操作的最壞情況時間也為 。真正需要攤銷分析的是 extract-min、decrease-key 等可能引發大量級聯操作的程序。
解題方法
判斷 Fibonacci heap 插入的實際操作:
- 新節點加入根串列:。
- 比較新節點與最小節點:。
- 必要時更新最小值指標:。
- 更新節點數量:。
總時間為固定數量的常數操作,因此:
所以正確選項為 (A)。
選項分析
- (A) :正確。
插入只需將新節點放入根串列,並可能更新最小值指標,不需依照 進行搜尋或重組。
第 9 題
In a Fibonacci heap of size n, the worst case time complexity of one decrease-key operation is
(A)
(B)
(C)
(D)
(E)
登入後即可作答並保存紀錄。
在 Fibonacci 堆中,decrease‑key 會把目標節點的鍵值減小,若此鍵值小於其父節點的鍵值,必須切割該節點並將其加入根列表。若被切割的節點之前已經是「標記」的子節點,則會遞迴向上切割其父節點,這個過程稱為級聯切割(cascading cut)。
每次切割會把一個節點從其原本的樹中抽出,使根列表的樹數增加。根列表中樹的最大度(degree)受到如下性質限制:
第 10 題
In a Fibonacci heap of size n, the worst case time complexity of n delete-min operations is
(A)
(B)
(C)
(D)
(E)
登入後即可作答並保存紀錄。
核心觀念
本題考查 Fibonacci heap 中 delete-min 的攤銷時間複雜度。
Fibonacci heap 的重要複雜度如下:
insert:攤銷find-min:decrease-key:攤銷delete-min:攤銷
delete-min 會刪除最小根節點,將其子節點移至根串列,再進行 consolidation,合併相同 degree 的樹。雖然單次合併可能需要處理許多根節點,但透過勢能法分析,其攤銷成本為 。
解題方法
設目前 Fibonacci heap 中的節點數不超過原始大小 。
單次 delete-min 的攤銷時間為:
連續執行 次時,總時間上界為:
也可以從勢能函數理解。Fibonacci heap 常用的勢能函數為:
其中:
- :根串列中的樹數量
- :被標記的節點數量
delete-min 可能暫時增加實際操作量,但 consolidation 會大量合併根樹,使根串列最後只剩下 棵樹。由於勢能的下降可抵銷部分實際成本,單次攤銷成本仍為 。
因此:
選項分析
第 11 題
In a Fibonacci heap of size n, the worst case time complexity of n decrease-key operations is
(A)
(B)
(C)
(D)
(E)
登入後即可作答並保存紀錄。
核心觀念
Fibonacci heap 的 decrease-key 主要成本來自 cascading cut(級聯切割):
- 將節點鍵值降低。
- 若違反父子關係,將該節點從父節點切下,移至 root list。
- 若父節點已經被標記,則繼續向上級聯切割。
一次 decrease-key 最壞可能沿著樹的路徑切割大量節點。對大小為 的 Fibonacci heap 而言,最壞可達 。
解題方法
單次操作的最壞時間為:
因此,連續執行 次 decrease-key,其最壞總時間為:
Fibonacci heap 常見的 是 decrease-key 的攤銷時間,不是單次操作的最壞時間。題目明確問的是 worst case,因此要使用最壞時間分析。
選項分析
- (A) :錯誤。
這是將decrease-key的攤銷時間 乘上 次所得的結果,屬於攤銷分析,不是本題要求的最壞情況分析。
第 12 題
In a leftist heap of size n, the worst case time complexity of one find-min operation is
(A)
(B)
(C)
(D)
(E)
登入後即可作答並保存紀錄。
核心觀念
Leftist heap(左偏樹)同時具備:
- Heap-order property:父節點的鍵值不大於子節點,因此最小值必定位於根節點。
- Leftist property:每個節點的右子樹空路徑長度較短,用來保證合併操作的效率。
find-min 只需回傳根節點的鍵值,不需要走訪其他節點。若以指標直接維護根節點,取出根節點即完成操作。
解題方法
設左偏樹的根節點指標為 root,則:
此操作只包含一次根節點存取,執行時間與節點總數 無關,因此:
最壞情況也同樣只需存取根節點,所以時間複雜度為:
因此正確選項為 (A)。
選項分析
-
(A) :正確。
左偏樹符合 heap-order property,最小元素位於根節點;find-min直接讀取根節點即可完成。 -
(B) :錯誤。
此複雜度不是左偏樹find-min的標準複雜度。find-min不需要依照樹高或特殊函數進行搜尋。
第 13 題
In a leftist heap of size n, the worst case time complexity of one find-min operation is
(A)
(B)
(C)
(D)
(E)
登入後即可作答並保存紀錄。
核心觀念
Leftist heap(左偏樹)同時具備:
- Heap-order property:父節點的鍵值不大於子節點,因此最小值必定位於根節點。
- Leftist property:每個節點的右子樹空路徑長度較短,用來保證合併操作的效率。
find-min 只需回傳根節點的鍵值,不需要走訪其他節點。若以指標直接維護根節點,取出根節點即完成操作。
解題方法
設左偏樹的根節點指標為 root,則:
此操作只包含一次根節點存取,執行時間與節點總數 無關,因此:
最壞情況也同樣只需存取根節點,所以時間複雜度為:
因此正確選項為 (A)。
選項分析
-
(A) :正確。
左偏樹符合 heap-order property,最小元素位於根節點;find-min直接讀取根節點即可完成。 -
(B) :錯誤。
此複雜度不是左偏樹find-min的標準複雜度。find-min不需要依照樹高或特殊函數進行搜尋。
第 14 題
An AVL tree of 100 nodes has height at most
(A) 5
(B) 6
(C) 7
(D) 8
(E) 9
登入後即可作答並保存紀錄。
核心觀念
AVL tree 是一種高度平衡的二元搜尋樹,對每個節點都必須滿足:
要找「100 個節點的 AVL tree 高度上限」,必須思考:
在固定高度下,符合 AVL 平衡條件所需的最少節點數是多少?
高度越高,所需的最少節點數越多。因此,只要找出「最少節點數不超過 100 的最大高度」即可。
以下採用資料結構常用定義:葉節點高度為 ,高度以最長邊數計算。
解題方法
令 表示高度為 的 AVL tree 所需的最少節點數。
為了讓高度為 且節點數最少,左右子樹的高度必須盡量小,同時仍維持 AVL 平衡,因此兩棵子樹的高度為:
所以有遞迴式:
其中:
- 高度 :只有一個根節點,因此
- 高度 :根節點加上兩個葉節點,因此
逐步計算:
因此:
第 15 題
A 2-3-4 tree of 255 nodes has height at most
(A) 3
(B) 4
(C) 5
(D) 6
(E) 7
登入後即可作答並保存紀錄。
核心觀念
2-3-4 tree 是一種平衡搜尋樹,具有以下性質:
- 每個內部節點至少有 個子節點,最多有 個子節點。
- 所有葉節點位於相同深度。
- 樹高通常定義為「根節點到最深葉節點的邊數」,根節點高度為 。
要讓節點數固定時樹高最大,必須使每一層的分支數最少,也就是每個內部節點都只有 個子節點。
解題方法
設樹高為 。當每個內部節點都只有 個子節點時,各層的最少節點數為:
因此,高度為 的 2-3-4 tree 至少包含:
題目給定節點總數為 ,因此必須滿足:
而且高度 確實可以達成,因為:
也就是一棵每個內部節點都恰有 個子節點的完全平衡樹。
選項分析
第 16 題
In a binomial heap of 2020 items, the maximum order among all binomial trees is
(A) 8
(B) 9
(C) 10
(D) 11
(E) 12
登入後即可作答並保存紀錄。
核心觀念
Binomial heap 是由多棵 binomial tree 組成,且每種階數至多一棵。
階數為 的 binomial tree 記為 ,具有:
- 節點數:
- 根節點的 degree:
因此,若 heap 中存在階數為 的 binomial tree,至少需要有 個 items。含有 個 items 的 binomial heap,其最大階數為:
解題方法
本題有 個 items,計算:
因為:
所以:
也可由二進位分解理解:
其中最大的 為 ,因此 heap 中可能包含一棵 ,但不可能包含 ,因為 單獨就需要 個節點。
選項分析
第 17 題
What is the size of the smallest Fibonacci heap of order 6?
(A) 8
(B) 16
(C) 21
(D) 32
(E) 64
登入後即可作答並保存紀錄。
核心觀念
Fibonacci heap 中,若某個樹根的階(order)為 ,即其 degree 為 ,則該樹所能包含的最少節點數為:
其中 Fibonacci 數列定義為:
因此,題目詢問「order 6 的最小 Fibonacci heap」,就是求 degree 為 的 Fibonacci 樹,其最少節點數。
解題方法
逐步計算 Fibonacci 數列:
由最小節點數公式:
所以最小 Fibonacci heap 的節點數為 。
選項分析
第 18 題
Which of the following statements are true?
(A) The search operation in a binary search tree of size n is .
(B) The height of a binary search tree of size n is .
(C) The search operation in an AVL tree of size n is .
(D) The height of an AVL tree of size n is .
(E) The delete operation in an AVL tree of size n is .
登入後即可作答並保存紀錄。
核心觀念
本題考查二元搜尋樹(Binary Search Tree, BST)與 AVL 樹的高度及基本操作複雜度。
對含有 個節點的二元樹:
- 若樹高為 ,搜尋、插入、刪除等沿樹根至葉節點進行的操作,時間複雜度通常為 。
- 一般 BST 不保證平衡,最壞情況可能退化成鏈結串列,此時 。
- AVL 樹是高度平衡的 BST,保證 。
AVL 樹的平衡條件為每個節點的左右子樹高度差至多為 :
因此 AVL 樹高度為 。
解題方法
逐一判斷各敘述是否對所有大小為 的樹都成立。關鍵在於:
再分辨該資料結構是否保證高度為 。
選項分析
(A) The search operation in a binary search tree of size n is .
錯誤。
一般 BST 不保證平衡。若插入資料已經按照遞增順序排列,BST 可能退化如下:
此時樹高為:
搜尋最深層節點需走訪 個節點,因此最壞時間複雜度為:
只有在 BST 額外保證平衡時,搜尋才是 。
(B) The height of a binary search tree of size n is .
錯誤。
一般 BST 的高度取決於節點排列方式:
- 完全平衡時:
- 退化成鏈結串列時:
因此一般 BST 的高度只能表示為:
不能保證為 。
第 19 題
Consider the AVL tree in Fig.1.
(A) In Fig.1, after inserting the key 66, then the parent of key 66 is key 61.
(B) In Fig. 1, after inserting the key 99, then the key 95 has two children.
(C) In Fig. 1, after inserting the key 30, then the parent of key 30 is key 35.
(D) In Fig. 1, after deleting the key 75, then the key 87 has two children.
(E) In Fig.1, after deleting the key 1, then the parent of key 23 is key 13.
登入後即可作答並保存紀錄。
核心觀念
AVL 樹要求每個節點左右子樹高度差至多為 。插入或刪除後,若節點失衡,就依失衡方向旋轉:
- LL、RR 型:單旋轉。
- LR、RL 型:雙旋轉。
判斷選項時,沿二元搜尋樹的路徑找到插入或刪除位置,再由下往上檢查是否失衡及所需旋轉。
解題方法與選項分析
原樹中與本題相關的結構如下:
- 根節點 的右子樹為 ; 的左子為 (左子為 ),右子為 (左子為 ,右子為 ,而 的右子為 )。
- 的左子樹根為 ; 的左子為 (左子為 ),右子為 。 的左子為 (左右子分別為 ),右子為 。
(A) 正確。
插入 的搜尋路徑為 ,接著 成為 的右子。此時 的左右子樹高度相同, 仍符合 AVL 平衡條件,不需旋轉。因此 的父節點是 。
(B) 正確。
插入 後,它成為 的右子。節點 因右側過高而呈 RR 型失衡,對 做左旋,局部結構變成:
因此 有兩個子節點。
第 20 題
In a red-black tree of size n
(A) The root is always black.
(B) Each node is colored red or black.
(C) No root-to-external-node path has two consecutive red nodes.
(D) All root-to-external-node path have the same number of black nodes.
(E) The height of is .
登入後即可作答並保存紀錄。
核心觀念
紅黑樹(Red-Black Tree)是一種具有平衡性質的二元搜尋樹。每個節點具有紅色或黑色,並遵守以下條件:
- 根節點為黑色。
- 每個節點為紅色或黑色。
- 紅色節點的子節點必須為黑色,因此不會出現連續兩個紅色節點。
- 從任一節點到其所有外部節點(通常以黑色的 NIL 節點表示)的路徑,黑色節點數量相同。
- 紅黑樹的高度為 )。
其中,從某節點到外部節點路徑上的黑色節點數量稱為 black-height,記為 。
解題方法
本題逐一對照紅黑樹的定義與高度性質判斷。選項中的「root-to-external-node path」指的是從根節點走到外部 NIL 節點的路徑。
紅黑樹的高度為 時,由於紅色節點不能連續出現,因此任一路徑上紅色節點數量至多為黑色節點數量。故有:
另一方面,具有 black-height 的紅黑樹至少包含:
個內部節點,因此:
得到:
所以:
選項分析
(A) The root is always black.
正確。
紅黑樹的標準定義規定根節點必須為黑色。此條件有助於統一路徑上的黑色節點數量定義,也屬於紅黑樹的基本性質。
(B) Each node is colored red or black.
正確。
紅黑樹中的每個節點都必須被標記為紅色或黑色,不能出現第三種顏色。
(C) No root-to-external-node path has two consecutive red nodes.
第 21 題
Consider the red-black tree in Fig.2
(A) In Fig.2, after top-down inserting the key 86, then the color of key 86 is red.
(B) In Fig.2, after top-down inserting the key 9, then the parent of key 9 is key 13.
(C) In Fig.2, after top-down deleting the key 87, then the color of key 85 is red.
(D) In Fig.2, after top-down deleting the key 10, then the parent of key 13 is key 15.
(E) The 2-3-4 tree representation of Fig.2 has height 2.
登入後即可作答並保存紀錄。
核心觀念
紅黑樹操作會依序調整節點顏色與子樹結構,使每條根至外部節點的路徑維持相同黑節點數,且不出現連續紅節點。插入時,新節點先視為紅色,再用旋轉與重新著色修正;刪除黑節點時,若其子節點為紅色,替補後須調整顏色。
將紅節點與其黑色父節點合併,可得到對應的 2-3-4 樹。以下高度以根到最深葉節點的邊數計算。
解題方法
依 Fig.2 的實際結構與顏色判斷各操作:
- 插入 86 的搜尋路徑是 ,新節點 86 接在 85 下方。
- 插入 9 的搜尋路徑是 ,新節點接在 10 下方。
- 刪除 87 時,紅色節點 85 是黑色節點 87 的子節點。
- 刪除 10 時,沿路向下需處理 13 右側的紅色子樹 51;其後透過旋轉與重新著色,會讓 15 成為 13 的父節點。
- 將圖中紅黑節點合併為 2-3-4 樹後,根到最深一層的路徑有 2 條邊。
選項分析
第 22 題
Consider the AA tree in Fig.3
(A) Key 4 and key 63 have the same level.
(B) Key 62 and key 69 have the same level.
(C) In Fig.3, after inserting the key 1, the key 4 is in the same level of key 42.
(D) In Fig.3, after inserting the key 61, the parent of key 61 is key 62.
(E) In Fig.3, after inserting the key 88, the parent of key 86 is key 77.
登入後即可作答並保存紀錄。
核心觀念
AA 樹的「層級(level)」與節點在圖上的深度不同,其規則為:
- 空節點的層級為 ,新插入的節點層級為 。
- 左子節點的層級必須比父節點低 。
- 右子節點可以與父節點同層級,形成「右水平連結」,但不能連續出現兩條右水平連結。
插入時,先依二元搜尋樹規則找到位置,再由下往上依序執行:
- skew:若左子節點與父節點同層級,做右旋;節點層級不變。
- split:若節點、右子節點、右孫節點皆同層級,做左旋,並將旋轉後的新子樹根層級加 。
解題方法
依原圖的水平連結及 AA 樹規則,可得:
| 層級 | 節點 |
|---|---|
其中 、、 是右水平連結。各選項的插入操作皆分別從原圖開始,並非連續插入。
選項分析
(A) 錯誤。
節點 的層級為 ,節點 的層級為 ,兩者不同層級。 與 才是同層級。
(B) 正確。
與 都是葉節點,層級皆為 。
(C) 錯誤。
插入 時,先將它放在 的左側,層級為 ,接著向上調整:
- 在 執行 skew,形成同層級的右鏈 。
- 執行 split,使 成為這棵子樹的根,層級升為 ;左右子節點分別是 、。
- 此時 與其左子節點 同為層級 ,在 執行 skew,形成同層級的右鏈 。
- 再執行 split,使 成為子樹根,層級升為 ; 與 都維持層級 。
第 23 題
Which of the following operations are supported by hash table?
(A) Find key
(B) Insert key
(C) Delete key
(D) Find-Min
(E) Delete-Min
登入後即可作答並保存紀錄。
核心觀念
雜湊表(Hash Table)利用雜湊函數將 key 映射至表格中的位置:
因此,雜湊表擅長處理「指定 key 是否存在」以及「指定 key 的資料」等操作。設雜湊表中有 筆資料,在雜湊函數分布良好且碰撞處理適當時:
- 搜尋指定 key:平均
- 插入指定 key:平均
- 刪除指定 key:平均
雜湊表的索引依據是 key 經過雜湊函數後的結果,並未維持所有 key 的大小順序。因此,找最小 key 或刪除最小 key 並不是標準雜湊表擅長的操作。
解題方法
判斷每個選項是否能由雜湊表直接有效支援:
- 若操作指定一個明確的 key,能直接利用雜湊函數定位,屬於雜湊表的基本操作。
- 若操作要求找出「全體 key 中最小者」,必須比較許多 key 的大小;雜湊表本身沒有排序資訊,無法保證常數時間完成。
選項分析
(A) Find key
正確。
給定一個 key,可計算其雜湊值:
再至位置 檢查資料。若發生碰撞,依照 chaining 或 open addressing 的規則繼續尋找。
平均時間複雜度為:
最差情況可能退化為:
(B) Insert key
正確。
插入新 key 時,先計算:
再將 key 放入對應位置。若該位置已有其他 key,使用碰撞處理機制放置資料。
平均時間複雜度為:
第 24 題
Which of the following statements are correct?
(A) In a binomial heap, there is at most one binomial tree of order 3.
(B) In a binomial heap of n items, the height among all binomial trees is .
(C) In a binomial heap of n items, there is binomial trees.
(D) Stack is first-in-first-out.
(E) Queue is first-in-first-out.
登入後即可作答並保存紀錄。
核心觀念
本題考查二項堆(binomial heap)的結構性質,以及 Stack、Queue 的進出順序。
二項堆由若干棵二項樹組成,且滿足:
- 每棵二項樹的階數皆不重複,因此至多有一棵 。
- 階數為 的二項樹 含有 個節點。
- 的高度為 。
- 一個含有 個元素的二項堆,其二項樹數量不超過 。
- Stack 遵循後進先出(LIFO)。
- Queue 遵循先進先出(FIFO)。
解題方法
逐一套用二項樹與線性資料結構的定義,判斷各敘述是否符合標準性質。
選項分析
(A) In a binomial heap, there is at most one binomial tree of order 3.
正確。
二項堆中至多存在一棵相同階數的二項樹。若有兩棵相同階數的二項樹,合併操作會將它們連結成一棵階數加一的二項樹。
因此,對於階數 的二項樹 ,二項堆中至多有一棵,故此敘述正確。
(B) In a binomial heap of n items, the height among all binomial trees is .
正確。
階數為 的二項樹 有
個節點,且高度為 。
在含有 個元素的二項堆中,任何一棵二項樹的節點數不能超過 ,所以有
兩邊取對數可得
因此所有二項樹中的最大高度為
故此敘述正確。
(C) In a binomial heap of n items, there is binomial trees.
正確。
第 25 題
Let f(n) ~g(n) denote f(n) , and f(n) > g(n) denote f(n) but f(n) . Which of the following statements are correct?
(A)
(B)
(C)
(D) If f(n) is , then is .
(E) If f(n) is , then is .
登入後即可作答並保存紀錄。
的 Stirling 近似為
遠大於 ,故 (A) 錯。
與 的比率
故 ,(B) 錯。
明顯成立。