根據前序和後序來確定中序是否是唯一的 如果乙個數他在根結點旁邊 那麼就無法判斷它是否是左右子樹 這個時候就得重新考慮了
#include
using
namespace std;
const
int maxn =50;
struct node
;bool flag =
true
;vector<
int> in;
int pre[maxn]
;int post[maxn]
;node*
create
(int prel,
int prer,
int postl,
int postr)
node* root =
new node;
root -
> data = pre[prel]
; root -
> left = root -
> right =
null;if
(prel == prer)
int k;
for(
int i = prel +
1;i<=prer;i++)}
int numleft = k - prel -1;
if(numleft >=1)
else
return root;
}void
inorder
(node* root)
inorder
(root -
> left)
;// printf("%d\n",root -> data);
in.push_back
(root -
> data)
;inorder
(root -
> right);}
intmain
(void
)for
(int i =
0;i) node* root =
null
; root =
create(0
,n -1,
0,n -1)
;if(flag ==
true
)else
inorder
(root)
;for
(int i =
0;isize()
;i++
)else
}printf
("\n");
return0;
}```
PAT甲級題解目錄
寫在前面 9月8號剛參加了第一次pat甲級考試,成績還算是滿意。但是沒有滿分,算是有一點小遺憾,於是打算12月再來一次,但是這次採用佛系備考與吃老本的複習方法 畢竟初試重要啊 為了記錄一下成長歷程和各題要點,順便做乙個部落格題解,也給有需要的戰友們提供乙個參考吧。本部落格純屬個人記錄與經驗分享,不帶...
PAT甲級題解1004
注意的是m代表的是the number of non leaf nodes 要看清楚題意,一開始把n m認為是輸入的行數了 利用vector特性 題意大致是尋找每層葉結點的個數,dfs遍歷這棵樹,遍歷時統計即可。include using namespace std const int maxn 1...
PAT甲級題解 1021
先判斷有幾個連通塊嗎,因為已經滿足邊的個數等於頂點個數減1所以一定是一棵樹,只要是1.本來用的是優先佇列,最後發現沒過,其實是error k components 少了個s看題目一定要仔細 include using namespace std const int maxn 10100 vector...