請回答下列問題:(每小題6分,共24分)
請問下列遞迴(recursive)演算法的解為何?
2
if
2,
( )
2 ( / 2)
if
2 ,for
1
k
n
T n
T n
n
n
k
請畫出將2、1、4、5、9、3、6、7插入最初為空的AVL 樹中的結果。
在下圖的展開樹(splay tree)中,請畫出用鍵值(key)6刪除元素(deleting
the element)的結果。
請畫出使用線性時間演算法(linear time algorithm),將10、12、1、14、
6、5、8、15、3、9、7、4、11、13和2,來建立二元堆積(binary heap)
的結果。
C
使用LZW 編碼法對下列訊息進行編碼,試問編碼後的結果為何?(25 分)
ABCABCABC
二、在現行網際網路協定裡,軟體的部分可以被歸類到4 個抽象的層中。這
4 個階層為應用層(application layer)、傳輸層(transport layer)、網路層
(network layer)和鏈結層(link layer)。請回答下列問題:(每小題5 分,
共25 分)
TCP(transmission control protocol)是屬於那一層的協定?
TCP 提供流量控制(flow control)的服務,試論述此流量控制的功能
為何?
安全殼協定(secure shell protocol)是屬於那一層的協定?
載波偵聽多路存取(CSMA)是屬於那一層的協定?
埠號(port number)存在於那一層的協定?
70570
三、請詳細解釋下列C 語言程式的執行過程,main()執行後將會印出什麼訊
息?(25 分)
#include<stdio.h>
int f(int *a1, int *a2){
return *a1=*a1**a2;
}
int main(){
int x1=3, x2=2, x3=1;
x3= f(&x1,&x2);
printf("%d", (x2-x1)*x1/5);
return 0;
}
有一個二元樹(binary tree)共有10個節點,每個節點均儲存一個英文字
母。若此二元樹:
使用中序走訪(inorder traversal)的結果為:R
T
D
P
X
Y
K
G
A
B
且使用層序走訪(level order traversal)的結果為:P
R
X
D
A
T
K
B
Y
G
則此二元樹為何?請畫出此二元樹。(20分)
下列8 筆英文字母資料依讀入順序為:P, A, N, D, E, M, I, C。
請回答下列問題:
創建並畫出對應之二元搜尋樹(binary search tree)。(10 分)
對所造出之樹進行中序遍歷(in-order traversal),所拜訪的節點依序為
何?(10 分)
在此樹尋找特定的字母時,最糟的情況需要幾次的搜尋動作?(5 分)
請回答下列問題:(每小題5分,共20分)
假設x 的值為0情況下,執行以下函數,請問輸出結果為何?
def fun1(x):
print(x)
if (N < 2):
fun1(x + 1)
else:
print(x)
print(x)
假設有一棵二元樹(t)如下左圖所示,執行如下右圖函數,請問輸出結
果為何?
def PT(t):
if(t is not NULL):
print(t.Value)
PT(t.Right)
請問以下程式,輸出結果為何?
main()
{
int A = 5;
while (A < 7) {
printf("%i ", A);
A++;
}
printf("%i ", A);
while (A > 2) {
printf("%i ", A);
A -= 2;
}
}
請問以下程式,輸出結果為何?
void funcC(int *p){
int y;
y = *p + 3;
*p = y * 3;
}
main()
{
int m = 5, n = 6;
funcC(&m);
funcC(&n);
printf("%4d%4d\n", m, n);
}
以下C++程式的目的為何?詳述執行流程並寫出程式的輸出。(20分)
#include <iostream>
#include <iomanip>
using namespace std;
int main(){
int x = 30, y = 100, ok = 1;
int i, j;
for(i = x ; i <= y; i++){
ok = 1;
for(j = 2; j < i ; j++)
if(i % j == 0){
ok = 0;
break;
}
if(ok == 1) cout << i << "
";
}
cout << endl;
return 0;
}