logo

バランスの取れた二分木

二分木は、木の高さが O(Log n) (n はノードの数) の場合にバランスがとれています。たとえば、AVL ツリーは、左と右のサブツリーの高さの差が最大 1 であることを確認することで、O(Log n) の高さを維持します。赤黒ツリーは、次の数を確保することによって、O(Log n) の高さを維持します。すべての根から葉へのパス上の黒いノードの数は同じであり、隣接する赤いノードはありません。バランス二分探索ツリーは、検索、挿入、削除に O(log n) 時間を提供するため、パフォーマンスの点で優れています。

js オンクリック

バランスの取れた二分木とは、次の 3 つの条件を満たす二分木です。

  • どのノードでも、左右のツリーの高さの差は 1 を超えません。
  • そのノードの左側のサブツリーもバランスが取れています。
  • そのノードの右側のサブツリーもバランスが取れています。

単一ノードは常にバランスが取れています。高さバランスのとれた二分木とも呼ばれます。



:

バブルソートPython
バランスのとれたバイナリ ツリーとアンバランスのバイナリ ツリー

バランスのとれたバイナリ ツリーとアンバランスのバイナリ ツリー

これは、各ノードの左と右のサブツリーの高さの差が 0 または 1 であるバイナリ ツリーの一種です。上の図では、値 0 を持つルート ノードは深さが 2 単位で不均衡です。 。



バランスの取れた二分木の応用:

バランスの取れたバイナリ ツリーの利点:

  • 非破壊的な更新は、同じ漸近効果を持つバランス バイナリ ツリーによってサポートされます。
  • 範囲クエリと正しいシーケンスでの反復は、バランスのとれたバイナリ ツリーによって実現可能になります。