議論(A)の[]バイナリツリーデータ構造の基本的な内容

まず、二分木が定義される:(すべてのサブツリーの各ノードの最大値)は2の数です。

第二に、バイナリツリーの性質:

1.バイナリツリー第i層上の最大2 ^(I - 1)番目のノード。

2. Kの深さにバイナリツリー最大2 ^ K - 1番目のノード。

  2-1およびK 2の深さを有しているが、^ K -二分木の1つのノードが呼び出され、完全なバイナリツリー

  2-2編集された番号(1〜2 ^ K - 1で左から右にトップダウン、より完全なバイナリツリーの各ノード )。場合にのみ、ノードは、深さK-1に対応(すなわち、最後の層の最後から二番目のノード度がないの完全なバイナリツリーに関連付けられているそれぞれが場合はkの深さは、ノードがバイナリツリーにn個存在する2 、不足している完全なバイナリツリーのノードに対してのみ最後の、そして最後の一つは左連続の右端から削除ノードである)、ツリーが呼び出され、完全二分木

ノード2 1の複数のノードの数の特定の割合を残す任意のバイナリツリー、3.。すなわち:N- 0 = N 2 + 1。 ;

図4は有するn型頂点の完全なバイナリツリーの深フロア(ログ2。n)を+ 1(フロア丸め下向き)。

N-ノードバイナリツリー5.は、任意のノード(数I)のために、以下のとおりです。

  5-1 I = 1の場合、ノードは、ルートノード、親ノード番号または床(I / 2)(プログラム内のI / 2に直接書き込むことができる)です。

  5-2 2 I> nで、このノードに子がない*場合は、ルートである;、これが唯一の左の子ノードである2 * I == n個あれば、その数は2 * iは、そうでない場合は、このノードが持っています左の子と右の子、第2 * iと2 * I + 1でした。

第三に、バイナリツリーストレージ:ストレージ構造:

1つの 構造体ノード
 2  {
 3。       DATA_TYPEデータ; // データ
。4       ノード* leftChild、rightChild; // 左の子および右側の子
5  };
 6ノード* BT; // ルート

IV:バイナリツリートラバーサル(バイナリツリートラバーサル操作の各が空ではありません)

1.プレオーダー:ルート・ノードに(1)アクセス、(2)予約限定左サブツリー;(3)プレオーダー右サブツリー(ルート - >左 - >右)

2.トラバース配列:( - >ルート - >右から左)、(3)予約限定右サブツリー;ルートノード(2)アクセス(1)サブツリートラバーサル順序を残し

3.後順:(1)後順にサブツリーを左;(2)右サブツリー先行予約、ルートノードへの(3)アクセス(左 - >右 - >ルート)

ボイドプレ(ノード* BT)// プレオーダー
{
     IF (BT)
    { 
        COUT << BT-> データ; 
        プレ(BT - > leftChild); 
        プレ(BT - > rightChild); 
    } 
} 
ボイド における(ノード* BT )// トラバーサルシーケンス
{
     IF (BT)
    { 
        (BT-> leftChild); 
        COUT << BT-> データ;
         (BT-> rightChild); 
    } 
} 
ボイドポスト(ノード* BT)// 後順トラバーサル
{
    もし(BT)
    { 
        ポスト(BT - > leftChild)。
        ポスト(BT - > rightChild); 
        coutの << BT-> データ; 
    } 
}

 

おすすめ

転載: www.cnblogs.com/jiangyuechen/p/12622488.html