調查局三等申論題
105年
[電子科學組] 計算機概論
第 一 題
📝 此題為申論題,共 2 小題
小題 (一)
若一棵二元樹(binary tree)共有 235 個節點(node),已知它有 78 個樹葉節點(leaf node),試求分支度(degree of branch)為 1 的節點數是多少?(10 分)
思路引導 VIP
看到二元樹節點數量的計算題,首要聯想二元樹的兩個核心數學屬性公式:『總節點數 n = n0 + n1 + n2』,以及由邊數推導出的『樹葉節點與度數為 2 節點的關係 n0 = n2 + 1』。將已知條件代入推導,即可迅速解出特定分支度的節點數。
小題 (二)
考慮存放整數元素的堆疊 cStack,並限定只能使用四個堆疊方法(stack method):isEmpty()、pop()、pop(int x)與 push(int y)。使用虛擬碼(pseudocode)或 C++撰寫程式片段,彈出 cStack 所有的元素,並回傳這些元素的總和。(10 分)
思路引導 VIP
看到此題,應立即聯想到堆疊(Stack)的 LIFO(後進先出)特性與基本走訪迴圈。題目刻意給出 pop(int x),在軟體工程與虛擬碼實務上,通常隱含『透過參數 x 以傳遞參照(Pass by Reference)的方式接收並移除頂端元素』之意。解題時需指出此設計概念,並結合 isEmpty() 撰寫迴圈累加總和以展現嚴謹度。