〇、前言
這周開始了【MOOC-浙江大學-陳越、何欽銘-數據結構】的期中考試,感覺有點難,可能是我才學了一個月不到的原因???
一、判斷題
1-1、用 鄰接表 法存儲圖,占用的存儲空間數只與圖中結點個數有關,而與邊數無關。
作者: DS課程組
單位: 浙江大學
鄰接矩陣的空間復雜度為O( ),與邊的個數無關。
鄰接表的空間復雜度為O( ),與圖中的結點個數和邊的個數都有關。
1-2、在一棵由包含4、5、6等等一系列整數結點構成的 二叉搜索樹 中,如果結點4和6在樹的同一層,那么可以斷定結點5一定是結點4和6的父親結點。
作者: DS課程組
單位: 浙江大學
5是6的左子樹節點就是一個反例。
1-3、如果無向圖 G
必須進行兩次 廣度優先搜索 才能訪問其所有頂點,則 G
一定有2個連通分量。
作者: DS課程組
單位: 浙江大學
連通分量:無向圖的極大連通子圖。
相似但是錯誤的說法:如果無向圖G必須進行兩次廣度優先搜索才能訪問其所有頂點,則G中一定有回路。
1-4、若一棵 平衡二叉樹 的所有非葉結點的 平衡因子 都是0,則其必為完美二叉樹。
作者: 徐鏡春
單位: 浙江大學
平衡因子是0,代表着左右子樹的高度一樣。
1-5、若一個結點是某二叉樹的 中序遍歷序列 的最后一個結點,則它必是該樹的 前序遍歷序列 中的最后一個結點。
作者: DS課程組
單位: 浙江大學
假設:
A
/
B
中序是左一根一右順序,前序是根一左一右順序:
- 前序遍歷序列為A-B;
- 中序遍歷序列為B-A;
那么結點A是中序遍歷序列的最后一個結點,但是它並不是前序遍歷序列中的最后一個結點。
如果【若一個結點】改成【若一個葉子結點】,那么命題為真。
1-6、一棵有124個結點的 完全二叉樹,其葉結點個數是確定的。
作者: DS課程組
單位: 浙江大學
124上限是128( ),下限是64( ),中間這些都可以是葉子結點數。
補充:
假設n0
是度為0的節點總數(即葉子結點數),n1
是度為1的節點總數,n2
是度為2的節點總數。因為n= n0+n1+n2
(其中n為完全二叉樹的節點總數),又因為一個度為2的節點會有2個子結點,一個度為1的結點會有1個子結點,除根結點外其他節點都有父結點,得到n= 1+n1+2*n2
;兩式把n2
消去得:n= 2*n0+n1-1
,由於完全二叉樹中度為1的結點數只有兩種可能0或1,由此得到n0=n/2
或n0=(n+1)/2
。
1-7、算法 可以沒有輸入,但是必須有輸出。
作者: 李廷元
單位: 中國民用航空飛行學院
1-8、通過對 堆棧 S操作:Push(S,1)
, Push(S,2)
, Pop(S)
, Push(S,3)
, Pop(S)
, Pop(S)
。輸出的序列為:123。
作者: DS課程組
單位: 浙江大學
堆棧內的元素 | 輸出的元素 | 執行的操作 |
---|---|---|
1 | - | Push(S,1) |
2,1 | - | Push(S,2) |
2 | Pop(S) | |
3,1 | 2 | Push(S,3) |
2,3 | Pop(S) | |
2,3,1 | Pop(S) |
1-9、在用數組表示的 循環隊列 中,front
值一定小於等於 rear
值。
作者: DS課程組
單位: 浙江大學
循環隊列!!!
1-10、在具有N個結點的單鏈表中,訪問結點和增加結點的時間復雜度分別對應為 O(1)
和 O(N)
。
作者: DS課程組
單位: 浙江大學
都是O(N)。
二、選擇題
2-1、下列哪個函數是O(N)的?
答案:A
作者: DS課程組
單位: 浙江大學
2-2、先序遍歷圖示 二叉樹 的結果為
答案:B
作者: DS課程組
單位: 浙江大學
先序遍歷是根–左--右。
2-3、若某圖的 深度優先搜索 序列是{V1, V4, V0, V3, V2},則下列哪個圖不可能對應該序列?
答案:C
作者: 陳越
單位: 浙江大學
C應該是1,4,3,0,2。
2-4、已知一棵 完全二叉樹 的第6層(設根為第1層)有8個葉結點,則該完全二叉樹的結點個數最多是:
答案:C
作者: DS課程組
單位: 浙江大學
完全二叉樹比起滿二叉樹,只是在最下面一層的右邊缺少了部分葉結點,而最后一層之上是個滿二叉樹,並且只有最后兩層上有葉結點。
第6層有葉結點,則完全二叉樹的高度可能為6或7,顯然樹高為7時結點更多。若第6層上有8個葉結點,則前六層為滿二叉樹,而第7層缺失了8×2=16個葉結點,故完全二叉樹的結點個數最多為 個結點。
2-5、已知表頭元素為c的 單鏈表 在內存中的存儲狀態如下表所示:
現將 f
存放於 1014H
處,並插入到單鏈表中,若 f
在邏輯上位於 a
和 e
之間,則 a
、e
、f
的“鏈接地址”依次是:
答案:D
作者: DS課程組
單位: 浙江大學
f
在邏輯上位於a
和e
之間,則a
的鏈接地址為1014,即f
的地址,f
的鏈接地址為1010,即e
的地址,其他的鏈接地址則不變。
2-6、對 最小堆(小頂堆) {1,3,2,12,6,4,8,15,14,9,7,5,11,13,10} 進行三次刪除最小元的操作后,結果序列為:
答案:C
作者: DS課程組
單位: 浙江大學
硬算。
2-7、在一個不帶頭結點的非空 鏈式隊列 中,假設 f
和 r
分別為隊頭和隊尾指針,則插入 s
所指的結點運算是( )。
答案:B
單位: 浙江大學城市學院
隊列尾部插入元素。
2-8、表達式 a*(b+c)-d
的 后綴表達式 是:
答案:A
作者: DS課程組
單位: 浙江大學
后綴表達式。
2-9、一棵 二叉樹 中,雙分支結點數為15,單分支結點數為30,則葉子結點數為()個。
答案:B
作者: 嚴冰
單位: 浙江大學城市學院
2-10、在並查集問題中,已知集合元素0~8所以對應的父結點編號值分別是{ 1, -4, 1, 1, -3, 4, 4, 8, -2 }(注:−n表示樹根且對應集合大小為n),那么將元素6和8所在的集合合並(要求必須將小集合並到大集合)后,該集合對應的樹根和父結點編號值分別是多少?
答案:B
作者: DS課程組
單位: 浙江大學
2-11、設一段文本中包含字符{a, b, c, d, e},其出現頻率相應為{3, 2, 5, 1, 1}。則經過哈夫曼編碼后,文本所占字節數為:
答案:C
作者: DS課程組
單位: 浙江大學
2-12、下列函數
int func ( int n )
{ int i = 0, sum = 0;
while ( sum < n ) sum += ++i;
return i;
}
的時間復雜度是:
答案:B
作者: 考研試卷
單位: 浙江大學
進行t次循環后,
sum = (k+1)*k/2 < n
,左側約等於k*k
,則t
等於sqrt(n)
,時間復雜度為O( )。
三、程序填空題
1、下列代碼的功能是返回帶頭結點的單鏈表 L
的逆轉鏈表。
List Reverse( List L )
{
Position Old_head, New_head, Temp;
New_head = NULL;
Old_head = L->Next;
while ( Old_head ) {
Temp = Old_head->Next;
Old_head->Next=New_head; //需要填寫的語句
New_head = Old_head;
Old_head = Temp;
}
L->Next=New_head; //需要填寫的語句
return L;
}
以前我們用漫畫講過,可以自行查看,【手繪漫畫】面試必考之圖解逆轉單鏈表/單鏈表逆序。
2、下列代碼的功能是將大頂堆 H
中指定位置 P
上的元素的整數鍵值上調 D
個單位,然后繼續將 H
調整為大頂堆。
void IncreaseKey( int P, int D, PriorityQueue H )
{
int i, key;
key = H->Elements[P] + D;
for ( i = P; //需要填寫的語句
H->Elements[i/2] < key;
i/=2 )
H->Elements[i] = H->Elements[i/2]; //需要填寫的語句
H->Elements[i] = key;
}
與插入類似。
總結
簡單總結下,光看課和課件是不夠的的,還是建議看看課程的書。
我放在公眾號里了,歡迎自行去取!
回復【浙江大學】即可獲得,這可是我花了積分在CSDN上下的啊!!!
如果有幸幫到你,請幫我點個【贊】,給個【關注】!如果能順帶【評論】給個鼓勵,我將不勝感激。
如果想要更多的資源,歡迎關注 @我是管小亮,文字強迫症MAX~
回復【數據結構】即可獲取我為你准備的大禮。
想看更多文(段)章(子),歡迎關注微信公眾號「程序員管小亮」~