例3.4マシンのテストガイドラインバイナリツリートラバーサル

タイトル説明

任意の子のために:行きがけ、最終的にはその右のサブツリーを横断し、左のサブツリーを横断した後の最初の訪問で、任意のサブツリーのために、と:先行順走査を:定義を通過した後のシーケンスにおけるプリアンブルバイナリツリー、ツリーは、最初のルート、右部分木トラバースその最後を訪れ、その後、左のサブツリーを横断し、後順:すべてのサブツリーのため、左のサブツリーを横断する最初の、そしてその右部分木、根最後の訪問を横断します。バイナリツリートラバーサル順序の先行順走査を与えられ、その後(注:前順走査順序は順序指定されたトラバーサルを決定するように一意であることができる)予約購入を求めます。

説明を入力します。

Nに等しい長さを有する2つの文字列が26未満です。
一次トラバーサル行動する前に、二次トラバーサルの振る舞い。
26個のノードまでのA、B、C ...:大文字のバイナリツリーのノード名。

出力説明:

各試験サンプルについての可能な入力サンプルの複数のセット、
出力ライン、ストリングのトラバース。
例1

エントリー

ABC 
BAC 
FDXEAG 
XDEFAG

輸出

BCA 
XEDGAF

 

 
     
1の#include <stdio.hの>
 2の#include < ストリング・H>
 3  チャー 0009 [ 30 ]、STR2 [ 30 ]。
4  構造体ノード
 5  {
 6      ノード* lchild。
7      ノード* rchild。
8      チャーC。
9 }ツリー[ 50 ]。
10  int型のLOC。
11ノード・レコード生成()
 12  {
 13      ツリー[LOC] .lchild =ツリー[LOC] .rchild = NULL;
14      リターン&ツリー[LOC ++ ];
15  }
 16ノード*ビルド(INT S1、INT E1、INT S2、INT E2)
 17  {
 18      ノード*のRET = レコード生成()。
19      ret-> C = 0009 [S1]。
20      INT rootIdx。
21      のためにINT I = S2; I <= E2; iは++ 22      {
 23          であれば(STR2 [I] == 0009 [S1])
 24          {
 25              rootIdx = I。
26              ブレーク;
27          }
 28      }
29      露出した(!rootIdx = S2)
 30      {
 31          ret-> lchildのBUILD =(S1 + 1、S1 +(rootIdx-S2)、S2、rootIdx- 1 )。
32      }
 33      露出した(!rootIdx = E2)
 34      {
 35          ret-> rchildのBUILD =(S1 +(rootIdx-S2)+ 1、E1、rootIdx + 1 、E2)。
36      }
 37      リターンRET。
38  }
 39  空隙後順(ノード* T)
 40  {
 41      露出(メチル化> lchild = NULL!)後順(メチル化> lchild)。
42      もし(!T-> rchild = NULL)後順(T-> rchild);
43      のprintf(" %のC "、T-> C)。
44  }
 45  のint main()の
 46  {
 47      ながら(scanf関数(" %sは"!、STR1)= EOF)
 48      {
 49          のscanf(" %sの" 、STR2)。
50          LOC = 0 51          INT L1 = STRLEN(0009)。
52          INT L2 = STRLEN(STR2)。
53         ノード* T =ビルド(0、L1- 10、L2- 1 )。
54          後順(T)。
55          のprintf(" の\ n " );
56      }
 57      リターン 0 58 }
コードの表示

 

おすすめ

転載: www.cnblogs.com/qing123tian/p/11115747.html