
101
年公務人員高等考試三級考試試題 代號:36250
類 科: 資訊處理
科 目: 資料結構
全一張
(
)
三、堆積(heap)是一棵完整二元樹(complete binary tree),每個節點儲存一個鍵值(key
value),且每一個內部節點(internal node)的鍵值都不比其子節點的鍵值小。
請畫一棵七個節點的堆積,其節點儲存的鍵值形成的集合為
{100, 10, 55, 69, 38, 27, 48}。(5分)
請說明如何利用陣列(array)實做一棵 n個節點的堆積。(5分)
假設一棵 n個節點的完整二元樹,其每個節點儲存一個鍵值,除了根節點(root)
之外,其他內部節點的鍵值均不比其子節點的鍵值小。請用虛擬碼描述將這樣的
一棵二元樹調整成堆積的演算法。(10 分)
請說明如何利用上述演算法將一棵 n個節點之堆積的根節點儲存的鍵值刪除,得
到一棵儲存其餘 n–1個鍵值的堆積。(5分)
四、我們想設計一個動態資料結構儲存數字集合 S={0, 1, 2, …, n – 1}的倆倆沒有交
集,而且聯集等於 S的子集合。初始時有 n個元素,個數為 1的子集合,分別為
{0}, {1}, …, {n – 1}。我們希望這個資料結構可以支援以下兩個功能:
union(x, y): x, y ∈ S。union(x, y)將包含 x的子集合與包含 y的子集合聯集得到
一個新的子集合,原來的子集合不再存在。
equivalence(x, y): x, y ∈ S。equivalence(x, y)判斷 x與y是否屬於同一個子集合,
若屬於同一個子集合,則回傳“TRUE”,否則回傳“FALSE”。
上述兩個函式必須能夠依任何順序交替執行。
請描述一個可以達成上述需求而且 union(x, y)與equivalence(x, y)的時間複雜度均
為O(log n)的資料結構。(15 分)
請用虛擬碼描述可以在上述資料結構運作的 union(x, y)函式。(5分)
請用虛擬碼描述可以在上述資料結構運作的 equivalence(x, y)函式。(5分)