免費開始練習
調查局三等申論題 105年 [電子科學組] 計算機概論

第 一 題

📝 此題為申論題,共 2 小題

小題 (一)

若一棵二元樹(binary tree)共有 235 個節點(node),已知它有 78 個樹葉節點(leaf node),試求分支度(degree of branch)為 1 的節點數是多少?(10 分)

思路引導 VIP

看到二元樹節點數量的計算題,首要聯想二元樹的兩個核心數學屬性公式:『總節點數 n = n0 + n1 + n2』,以及由邊數推導出的『樹葉節點與度數為 2 節點的關係 n0 = n2 + 1』。將已知條件代入推導,即可迅速解出特定分支度的節點數。

🤖
AI 詳解
AI 專屬家教

【解題思路】利用二元樹的節點分支度定理(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() 撰寫迴圈累加總和以展現嚴謹度。

🤖
AI 詳解
AI 專屬家教

【解題關鍵】利用 while 迴圈與 isEmpty() 判斷堆疊狀態,並透過 pop(int x) 取得頂端元素進行逐項累加。 【解答】 一、 方法語意與參數設計解析

升級 VIP 解鎖