バランスの取れたバイナリ検索ツリーは、ソートされたデータを維持し、検索、インサート、削除などの効率的な操作を保証するデータ構造です。 2つの一般的なタイプは、AVLの木と赤黒の木で、それぞれに独自のバランスの取れた原理で、パフォーマンスを最適化します。

AVLツリー

AVLツリーは、任意のノードの左右のサブツリー間の高さの違いが最も1つにあるバイナリ検索ツリーを自己バランス良くしています。この厳格なバランスにより、検索時間を短縮できますが、インサートと削除時の回転数が増加し、残高を維持できます。

操作後にノードがアンバランスになった場合、AVL プロパティを復元するために回転が行われます。これらの回転には、高さの差分制約を維持するのに役立ちます。

赤黒い木

レッドブラックツリーは、色(赤または黒)を各ノードに割り当てる、自己バランスの取れたバイナリ検索ツリーの一種です。 着色ルールは、ツリーがほぼバランスをとり、ルートから葉までは他のものと同じくらい2倍以上残っていることを防ぎます。

主な特性は次のとおりです。

  • どのノードも赤か黒のどちらかです。
  • 根はいつも黒です。
  • 赤いノードは赤く子供がいるわけではありません。
  • ノードから降下した葉までのすべてのパスには、同じ数の黒いノードが含まれている。

レッドブラックの木の樹木を、リカラーと回転によるバランスを保ちながら、インサートや削除を効率的に行えるようにしています。

AVLと赤黒の樹木との比較

AVLとRed-Blackの両木は、最適な性能のためにバランスの取れた木を維持することを目的としています。 AVLの木はより厳密にバランスが取れる傾向があり、より速い外観を提供するが、更新中により多くの回転を必要とする場合があります。 赤黒い木は、より少ない厳格で、より速いインサートと少し遅い外観で削除を提供します。