トピックリンク:http://acm.hdu.edu.cn/showproblem.php?pid=3791
問題の意味:Nが与えられる(複数の基、nは0終端である)、nは文字列の文字列に、各文字列を構築バイナリ検索ツリーと同様に最初の文字列のnの配列によって決定されます。それぞれ一次決意に。
#include <ビット/ STDC ++ H> 使用して 名前空間STDを、 構造体のノード { int型V; ノードは * *、左、右、 } * ルート。 ノード *ビルド(ノード*ルート、int型のV) { もし(ルート== NULL) { ルート = 新しいノード()。 ルート - > V = V; ルート - >左= root->右= NULL; } それ以外の 場合(V <= root-> V)root->左=ビルド(root-> 左、V); 他 root->右=ビルド(root-> 右、V); リターンルート。 } 文字列ANS1、ANS2、S。 空 DFS(ノード* ルート) { ANS1 + = to_stringに(root-> V)。 もし(root->左= NULL!)DFS(root-> 左)。 もし(!root->右= NULL)DFS(root-> 右)。 } int型のmain() { int型のn; 一方、(CIN >> N && N) { ANS1 = "" ; ルート = NULL; cinを >> 秒; 以下のために(int型私は= 0 ; S [i]は、iは++)ルート=ビルド(ルートは、S [i]は- ' 0 ' ); DFS(ルート)。 ANS2 = ANS1。 しばらく(N-- ) { ANS1 = "" ; ルート = NULL; cinを >> 秒; 以下のために(int型私は= 0 ; S [i]は、iは++)ルート=ビルド(ルートは、S [i]は- ' 0 ' ); DFS(ルート)。 もし(ANS1 == ANS2)はcout << " YES " << てendl; 他の裁判所未満<< " NO " << てendl; } } リターン 0 ; }