PAT_A1086#ツリーの全検索アゲイン

ソース:

PAT A1086ツリー全検索アゲイン(25分)

説明:

INORDERバイナリツリートラバーサルは、スタックと非再帰的な方法で実施することができます。例えば、(1から6までの番号キーを使用して)6-ノードバイナリツリーがトラバースされるときに、スタック操作であると仮定する:プッシュ(1)。プッシュ(2)。プッシュ(3)。ポップ(); ポップ(); プッシュ(4)。ポップ(); ポップ(); プッシュ(5)。プッシュ(6)。ポップ(); ポップ()。次いで、(図1に示される)固有のバイナリツリーは、この一連の動作から生成することができます。あなたの仕事は、この木の後順トラバーサル順序を与えることです。


図1

入力仕様:

各入力ファイルには、1つのテストケースが含まれています。各場合について、最初の行は、正の整数含ま  N(ツリー内のノードの総数である(したがって、ノードは1から番号が付けられている≤)  N)を。次に  2行は、それぞれのフォーマットでスタック操作を説明し、次のとおりXはスタックにプッシュされているノードのインデックスである「Xプッシュ」。またはスタックから一つのノードをポップするために意味する「ポップ」。

出力仕様:

各テストケースのために、一列に対応するツリーの後順トラバーサル順序を印刷します。解決策が存在することが保証されています。すべての数値は正確に一つのスペースで区切らなければならず、行の最後に余分なスペースがあってはなりません。

サンプル入力:

6
Push 1
Push 2
Push 3
Pop
Pop
Push 4
Pop
Pop
Push 5
Push 6
Pop
Pop

サンプル出力:

3 4 2 6 5 1

キー:

コード:

。1  / * 
2  時間:2019年6月30日14時34分48秒
 。3  問題:ツリー#PAT_A1086再びトラバース
 。4  AC:24:16
 。5  
。6  効果の対象は:
 7の スタックとスタック横断操作、印刷を与えます後順
 8。 
9つの。 基本的な考え方:
 10  二分木シミュレーションを横断する、プッシュサブツリーが存在する、ポップツリーが空である
 。11  * / 
12であるの#include <cstdioを>
 13であるの#include < ストリング >
 14の#include <iostreamの>
 15  使用 名前空間STD ;
 16  INT N-;
 17  
18は、 無効(順序どおりに)
 19。 {
 20は、     文字列オペアンプ;
21      int型のデータ。
22      cinを>> オペアンプ。
23      であれば(OP == " プッシュ" 24          のscanf(" %d個"、&データ)。
25      他の
26          のリターン27      静的 INT PT = 0 28      順序どおり()。
29      順序どおり()。
30      のprintf(" %d個の%のC "、データ、++ PT == N?' \ n ''  ' )。
31 }
 32  
33  のint main()の
 34  {
 35  の#ifdef ONLINE_JUDGE
 36  の#else 
37      freopenは(" Test.txtを"" R " 、STDIN)。
38  #endifの // ONLINE_JUDGE 
39  
40      のscanf(" %d個"、&N)
41      順序どおり()。
42  
43      リターン 0 44 }

 

おすすめ

転載: www.cnblogs.com/blue-lin/p/11109674.html