(シーケンス先行順走査をトラバースし、出力BSTかどうかが決定される)[PAT]グレード1043は、バイナリ検索ツリーです(25分)

質問の意味:

正の整数N(<= 1000)、次の数Nの入力点を入力します。入力は、バイナリ検索ツリーまたはその鏡像(中央反転180°)前順走査し、YESの出力、その出力後順のちょうど配列、そうでなければ出力NOである場合。

騙す:

:(ポストオートそれ)について
はcout <<それ<<(!(それ=ポスト[N-1]) " ":"?");

出力データポイントは0,1が不正な形式になりますように。未知の理由

 

COUT <<ポスト[0]。
(;私はpost.sizeを()<; ++ iは1 = INT)について
裁判所未満<<」「<<ポスト[i]は、
また、これは真実であります

 

コード:

#define HAVE_STRUCT_TIMESPEC
する#include <ビット/ STDC ++ H>
使用して名前空間std。
INT前[1007];
ベクトル<整数>ポスト。
int型のフラグ。
ボイドDFS(int型のL、R INT){
IF(L> R)
のリターン;
INT LL = L + 1、RR = R。
もし{(フラグ!)
一方、(LL <= R &&事前[LL] <予備[L])
++ LL。
(RR> L &&事前[RR]> =プレ[L])一方
--rr。
}
他{
一方(LL <= R &&事前[LL]> =プレ[L])
++ LL。
(RR> L &&事前[RR] <予備[L])一方
--rr。
}
IF(!LL = RR + 1)に
戻り、
DFS(L + 1、RR)。
DFS(LL、R)。
post.push_back(予備[L])。
}
メインINT(){
int型のn;
cinを>> N;
(; iが<= N I ++ iは1 = INT)のために
、CIN >> [i]の事前;
フラグ= 0。
DFS(1、N)
IF(post.size()<N){
フラグ= 1。
post.clear();
DFS(1、N)
}
IF(post.size()<N)
COUT << "NO"。
他の{
裁判所未満<< "YES \ N" <<ポスト[0];
(I = 1をint型、iが(post.sizeを<); ++ i)について
COUT <<」「<<ポスト[I]。
}
0を返します。
}

おすすめ

転載: www.cnblogs.com/ldudxy/p/11605680.html