高い木、AVL木や赤、黒の木

高い木、AVL木や赤、黒の木

バイナリツリートラバーサル予約注文/インオーダー/ポスト・オード

  1. プリアンブル(予約注文):ルート - 左 - 右

  2. (インオーダー)ために:左 - ルート - 右

  3. - 右 - 左ルート:シーケンス(ポストオーダー)した後、

サンプルコード

def preorder(self, root):
   if root:
        self .traverse_path.append(root.val)
        self .preorder(root.left)
        self .preorder(root.right) 

def inorder(self, root):
    if root:
        self .inorder(root.left)
        self .traverse_path.append(root.val)
        self .inorder(root.right)

def postorder(self, root):
    if root:
        self .postorder(root.left)
        self .postorder(root.right)
        self .traverse_path.append(root.val)

バイナリ検索ツリーのバイナリ検索ツリー

また、二分探索木として知られている二分探索木は、二分木(順序付きバイナリツリー)を命じ、(ソートバイナリツリー)バイナリツリーをソートし、以下の特性を有する空のツリーまたはバイナリツリーを指します。

  1. すべてのノードの左サブツリーの値は以下のルートの値以下です。
  2. 右サブツリーの全てのノードの値は、ルートの値よりも大きいです。
  3. ように:左と右のサブツリーも二分探索木です。(これは反復的です!)

予約限定:昇順

キー性能保証

  1. 2度を確保VV! - >左の部分木ノードバランス(再帰的に)

  2. バランス

  3. https://en.wikipedia.org/wiki/Selfbalancing_binary_search_tree

AVL木

  1. 本発明者らGMアデルソン-Velskyとエフゲニー・ランディス

  2. バランスファクター(バランス係数):それは、その左部分木の高さを引いその右部分木(時には反対)の高さです。バランス係数= {-1、0、1}

  3. 回転操作により(4種類)残高に

  4. https://en.wikipedia.org/wiki/Selfbalancing_binary_search_tree

回転操作

  1. L

  2. 右回りの

  3. 周りのスピン

  4. 右L

サブツリー形式:右、右部分木 - >左

サブツリー形式: - >右利きまたはサブツリーので、

サブツリーフォーム:左と右のサブツリー - >スピン周り

サブツリーの形状:左右のサブツリー - >左右

概要

  1. 平衡二分探索木

  2. 各ノード預金残高率= {-1、0、1}

  3. 4つの回転操作

不十分:ノードは、追加情報を格納し、頻繁な数を調整する必要があります

赤黒木

赤黒木約平衡二分探索木(バイナリ検索ツリー)は、任意のノードの左と右のサブツリーの高さが2倍未満であることを確認することが可能です。具体的には、次の条件が満たされている赤黒木は、二分探索木です。

  • 各ノードは、赤または黒であります

  • ルートノードは黒

  • 各葉ノード(​​NILノード、空のノード)は黒です。

  • あなたは、隣接する2つの赤のノードを持つことはできません

  • 任意のノードから各パスの全ての葉に黒のノードの同じ番号が含ま。

赤黒木

キープロパティ

長い可能な最短パスなどとして倍以上のルートからリーフまでの最長可能なパス。

コントラスト

  • 彼らはより厳密にバランスされているので、AVL木が速く赤黒木より検索を提供しています。

  • 赤黒木少ない回転が比較的リラックスしたバランスに行われてAVL木よりも早く挿抜操作を提供します。

  • AVL木は赤黒木は、ノード当たりの情報の1ビットのみを必要とするのに対し、このようにしてノード当たり整数のストレージを必要とする、各ノードとのバランス因子または高さを格納します。

  • 赤黒木は、マップ、マルチマップ、AVL木が速く回収のが必要とされているデータベースで使用されているのに対し、multisetin C ++などの言語ライブラリのほとんどで使用されています。

おすすめ

転載: www.cnblogs.com/liugangjiayou/p/12590277.html