0

バイナリ ツリーを作成し、プレオーダー トラバーサル戦略を使用して描画するにはどうすればよいですか? ルートは最初に入る数字になります。

私は数字のセットを持っています: 48 32 51 54 31 24 39. 48 がルートになります。プレオーダー トラバーサルでは、子ノードはどのようにバイナリ ツリーにプッシュされますか?

4

2 に答える 2

2

次のサブ問題を想像してください。あなたは一連の数字を持っています:

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

あなたは得る:

  • ルート: 10
  • 左のサブツリー: 1 5 2 9 3 1 6 4
  • 右のサブツリー: 11 15 12 19 20
于 2012-12-09T22:43:13.807 に答える
2

次のバイナリ ツリーがあるとします。

        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 を参照してください。

于 2012-12-09T23:07:40.237 に答える