0

このような文字列に基づいて、バイナリ ツリーを整数で埋めるとします。

 [int](LT)(RT)

LT は、ツリーの左側の部分と同じ形式の式です。RTも同様。有効な文字列は次のようになります: 4(2(1)(3))(6(5)(7). どうすればこの木を埋めることができますか? これは、いかなる種類のソートされたツリーでもありません。したがって、すべての「レベル」をノードで埋めることができます。ご協力ありがとう御座います。

4

3 に答える 3

2

そのためのパーサーを作成し、ある種のデータ構造にパーサーからの指示を入力する必要があります。

次に、データ構造がいっぱいになったら、それをツリーにプッシュします。

線に沿った何か:

 Structure s = Parser.parse("4(2(1)(3))(6(5)(7)");

そして、構造を繰り返します。

  Tree binaryTree = ...

  for( Instruction i : s ) {

      if( i.leaf == Tree.LEFT ) {
          tree.addLeft( i.value );
      } else if ( i.leaf == Tree.RIGHT ) {
           tree.addRight( i.value );
      }
  }
于 2009-10-15T22:04:19.537 に答える
0

文字列の最初の数字を取得し、'(' で分割し、末尾の ')' を取り除き、再帰的に繰り返します。

于 2009-10-15T22:02:16.213 に答える
0

スタックを使用して「(」と「)」を追跡する

すべての「(」をスタックにプッシュし、「)」に遭遇するとポップオフします。

そこから、自分で中間のものを解釈する方法を決定する必要があります。

于 2011-05-16T13:02:46.690 に答える