107 高考三級資料結構

()請說明並比較二分搜尋(binary search)與一般二元搜尋樹(binary search tree)兩者在儲存鍵值並應用來進行搜尋鍵值功能時,在'建置''搜尋'程序上作法與效能的差異。

()若有n個鍵值,以下列甲和乙兩種資料結構策略儲存:

策略甲:由小到大依序儲存在一陣列中

策略乙:以AVL tree架構儲存

請以Big-O觀念比較後續六種不同功能獨立運作時,這兩種策略何者效能較優或兩者效能相近:1.尋找特定鍵值k2.尋找排序為j的鍵值;3.刪除特定鍵值k4.刪除排序為j的鍵值;5.插入新鍵值;6.依序輸出所有鍵值。

 

[參考解答]

()

 

binary search

binary search tree

建置的資料結構

陣列

鏈結串列

建置的方法

一次性儲存所有鍵值後進行排序,排序方法:

1. 氣泡排序

2. 快速排序

3. 插入排序

4. 選擇排序

1、根據左子節點的鍵值<=父節點,右子節點的鍵值>父節點的規則,建立二元樹

 

建置時的平均時間複雜度(Big-O)

1. 氣泡排序:N2

2. 快速排序:N log N

3. 插入排序:N2

4. 選擇排序:N2

log N

搜尋方法

二分搜尋法

二元樹走訪

搜尋時間複雜度

log N

log N

 

()

 

時間複雜度

結果

binary search

binary search tree

尋找特定鍵值k

log N

log N

相近

尋找排序為j的鍵值

N

N

相近

刪除特定鍵值k

N log N

log N

binary search tree

刪除排序為j的鍵值

N

N log N

binary search  

插入新鍵值

N

log N

binary search tree

依序輸出所有鍵值

N

N

相近

 

文章標籤

luwuln1205 發表在 痞客邦 留言(0) 人氣()

一非空的二元樹(binary tree),如果有N0個葉節點(leaf node)且N2個節點之分支度(degree)為2,請證明N0 = N2+1。 【107高考】

證明如下:

1、從節點數來看,分支度為2的節點數N2個,分支度為1的節點數N1個,分支度為0的節點數N0個,則節點總數 = N2 + N1 + N0

2、從分支度來看,一非空二元樹,分支度為2的節點會有2個子節點,分支度為1的節點會有1個子節點,因此,節點總數 = 2N2 + N1 + 1( 根節點 )

 

12可得

N2+N1+N0 = 2N2 +N1 +1

=> N0 = N2 + 1

luwuln1205 發表在 痞客邦 留言(0) 人氣()

二元樹(binary tree)

 

【簡單說明】

節點:A,B,C,D皆稱為節點

根節點(root)A

父節點:ABC的父節點,BD的父節點

子節點:B, CA的子節點

葉節點:紅色的部分皆為葉節點

分支度(d):每個節點分支個數,A, B的分支度為2C的分支度為1D的分支度為0

高度(h):二元樹的階層數,上圖的高度為4( 若根節點為階層0時,則高度為3 )

 

【國家考試曾經考過的類型】

類型

年度 / 類科

證明「節點數」

107高考

100高考

計算「節點數」

107鐵路高員

106高考

二元樹走訪 / 建置

(前序 / 中序 / 後序)

107鐵路高員

106地方三等

106高考

104身障三等

104地方三等

103關務三等

103鐵路高員

103地方三等

102關務三等

101鐵路高員

100司法三等

陣列儲存二元樹問題

106地方三等

106高考

二元樹swap問題

102司法三等

 

文章標籤

luwuln1205 發表在 痞客邦 留言(0) 人氣()