バイナリ ツリーを作成し、プレオーダー トラバーサル戦略を使用して描画するにはどうすればよいですか? ルートは最初に入る数字になります。
私は数字のセットを持っています: 48 32 51 54 31 24 39
. 48 がルートになります。プレオーダー トラバーサルでは、子ノードはどのようにバイナリ ツリーにプッシュされますか?
バイナリ ツリーを作成し、プレオーダー トラバーサル戦略を使用して描画するにはどうすればよいですか? ルートは最初に入る数字になります。
私は数字のセットを持っています: 48 32 51 54 31 24 39
. 48 がルートになります。プレオーダー トラバーサルでは、子ノードはどのようにバイナリ ツリーにプッシュされますか?
次のサブ問題を想像してください。あなたは一連の数字を持っています:
N A1...AX B1...BY
N
それが対応するツリーのルートであることがわかります。知る必要があるのは、左側のサブツリーを形成する数字だけです。明らかに、残りの数値は右のサブツリーを形成します。
二分探索木の特性を覚えていれば、左側のサブツリーの要素の値はルートよりも小さい (右側の要素の値は大きい) ことがわかります。
したがって、左のサブツリーは、 より小さい (または等しい可能性がある) 数値のシーケンスですN
。残りの数値は右側のサブツリーにあります。
を再帰的に解く
A1...AX
と
B1...BY
たとえば、次のようになります。
10 1 5 2 9 3 1 6 4 11 15 12 19 20
あなたは得る:
次のバイナリ ツリーがあるとします。
A
/ \
B C
/ \ / \
D E F G
/ \
H I
予約注文トラバーサルは NODE、LEFT、RIGHT に進みます。
したがって、このバイナリ ツリーの予約注文は次のようになります。A B D E H I C F G
これを C++ で実装する方法の詳細については、 https ://stackoverflow.com/a/17658699/445131 を参照してください。