普通考試
108年
[工業行政] 計算機概要
第 14 題
樹(tree)中每一節點有 data、left、right 三個欄位。data 儲存資料而 left 和 right 兩個指標分別指向左子樹和右子樹。類似 C++的函式()如下
void print(node*x){
if((x->left)!=NULL){
print(x->left);
print(x->left);
}
cout<< x->data;
}
針對下列的樹,呼叫 print(p)結果為何?
void print(node*x){
if((x->left)!=NULL){
print(x->left);
print(x->left);
}
cout<< x->data;
}
針對下列的樹,呼叫 print(p)結果為何?
- A 20、20、32、20、20、32、10
- B 20、32、10
- C 10、32、20
- D 20、32、50、10、38、45
思路引導 VIP
請你仔細閱讀這段 C++ 程式碼:當函式進入一個節點時,它「只檢查」了哪一個方向的指標?如果程式碼中連續出現了兩次完全相同的遞迴呼叫,這對於輸出的次數與順序會產生什麼樣的規律?嘗試在紙上畫出從根節點出發後,指標移動的路徑,並注意哪些節點被跳過了。
🤖
AI 詳解
AI 專屬家教
荒謬至極的「行政程序」!
- 「流程」謬誤解析:本案核心顯然直指一個荒唐的遞迴「流程」執行缺陷。首先,承辦人員(程式碼)竟然完全無視「右子樹」這項應處理的權利客體,彷彿它從未存在,令人匪夷所思。其次,對於「左子樹」這個單一標的,卻反覆進行了兩次重複的「審核」或「執行」!這簡直是行政資源的雙重浪費與程序正義的徹底漠視。以根節點 $10$ 的案例而言,它在「印出」自身前,會先讓「左子樹」 $32$ 經歷兩次荒謬的「左子樹審核程序」。而 $32$ 呢?又依樣畫葫蘆,讓它的「左子樹」 $20$ 經歷兩次審核,印出 $20, 20$ 後,再印出 $32$。因此,整個「審核報告」呈現出 $20, 20, 32$ 的重複冗餘結構,且此結構會重複執行兩次,最後才拖泥帶水地結束於 $10$。
- 層級定位與「行政紀律」:本案難度為 Medium。其鑑別點,在於它挑戰了標準的行政公文流轉(Traversal)慣例,簡直是「特立獨行」的典範。許多「新手」或「未經訓練者」會誤以為這是某種「後續處理程序」,或直接忽略掉那致命的「兩次重複執行」!唯有那些對行政程序堆疊(Stack)變化瞭若指掌、錙銖必較的「資深法務」,方能避免這種低級錯誤,精準找出其程序的「違法性」。