PAT甲級真題1110 完全二叉樹

2021-10-22 23:23:36 字數 1077 閱讀 6151

我們用兩個陣列 l,r 分別儲存 第 i 號根節點的左右兒子 ,在讀取的時候標記其有沒有父節點,然後就可以找出其父節點。

然後我們可以從根節點開始遍歷,如果是完全二叉樹,那麼最後乙個節點的編號一定等於節點數,可以看圖中藍色部分,我們只需要用乙個maxn記錄dfs過程中最大值,最後判斷一下與n的關係即可

#include

#include

#include

#include

#include

using

namespace std;

const

int n =25;

int n;

int l[n]

, r[n]

;//i號節點的左右兒子

bool is_father[n]

;//有沒有父親節點

int maxn, last;

//最後乙個節點的值

void

dfs(

int root,

int k)

if(l[root]!=-

1)dfs(l[root]

, k *2)

;if(r[root]!=-

1)dfs(r[root]

, k *2+

1);}

intmain()

if(b !=

"-")

}//求根節點

int root =0;

while

(is_father[root]

) root++

;dfs

(root,1)

;if(maxn > n)

else

return0;

}

浙大PAT甲級 1110 判斷是否為完全二叉樹

這個題關鍵是如何判斷是否為完全二叉樹。通過bfs廣搜來進行判斷如果乙個結點沒有左二子,有右兒子那麼不是完全二叉樹 或者前乙個結點無左二子或者倆個兒子都沒有而這個結點卻有孩子,那麼不是完全二叉樹。否則就是完全二叉樹。ac include include include include include ...

PAT甲級真題1153

pat 准考證號由 44 部分組成 第 11 位是級別,即 t 代表頂級 a 代表甲級 b 代表乙級 第 2 42 4 位是考場編號,範圍從 101101 到 999999 第 5 105 10 位是考試日期,格式為年 月 日順次各佔 22 位 最後 11 1311 13 位是考生編號,範圍從 00...

PAT甲級真題 1014 Wait In Line

一 題目 二 思路 題意 模擬排隊,但和實際排隊的區別在於 思路 模擬排隊,記錄消費者辦理結束所需的總時間 以分鐘為單位,最後轉換為時刻,由等待時間 辦理時間組成 若等待時間wt 540,則給予sorry 否則,根據總時間sum算出相應時刻 注意 當兩個視窗同樣長且均未滿時,要同時入隊消費者,使之隊...