このような文字列に基づいて、バイナリ ツリーを整数で埋めるとします。
[int](LT)(RT)
LT は、ツリーの左側の部分と同じ形式の式です。RTも同様。有効な文字列は次のようになります: 4(2(1)(3))(6(5)(7)
. どうすればこの木を埋めることができますか? これは、いかなる種類のソートされたツリーでもありません。したがって、すべての「レベル」をノードで埋めることができます。ご協力ありがとう御座います。
このような文字列に基づいて、バイナリ ツリーを整数で埋めるとします。
[int](LT)(RT)
LT は、ツリーの左側の部分と同じ形式の式です。RTも同様。有効な文字列は次のようになります: 4(2(1)(3))(6(5)(7)
. どうすればこの木を埋めることができますか? これは、いかなる種類のソートされたツリーでもありません。したがって、すべての「レベル」をノードで埋めることができます。ご協力ありがとう御座います。
そのためのパーサーを作成し、ある種のデータ構造にパーサーからの指示を入力する必要があります。
次に、データ構造がいっぱいになったら、それをツリーにプッシュします。
線に沿った何か:
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 );
}
}
文字列の最初の数字を取得し、'(' で分割し、末尾の ')' を取り除き、再帰的に繰り返します。
スタックを使用して「(」と「)」を追跡する
すべての「(」をスタックにプッシュし、「)」に遭遇するとポップオフします。
そこから、自分で中間のものを解釈する方法を決定する必要があります。