すべての赤黒の木のバランスが取れているわけではありませんか?
直感的に、「バランスの取れたツリー」は、各ノードの左右のサブツリーが「ほぼ同じ」数のノードを持たなければならないツリーでなければなりません。 もちろん、赤黒木*(最後の定義を参照)のバランスについて話すとき、実際には、それらは高さのバランスが取れており、その意味で、バランスが取れていることを意味します。 上記の直観を次のように形式化しようとするとします。 定義:バイナリツリーはμμ\mu -balanced と呼ばれ、、ノードごとに不等式0≤μ≤120≤μ≤120 \le \mu \leq \frac{1}{2}NNN μ≤|NL|+1|N|+1≤1−μμ≤|NL|+1|N|+1≤1−μ \mu \le \frac{|N_L| + 1}{|N| + 1} \le 1 - \mu がすべて保持され、上記のステートメントが失敗するノードがあります。は、および左サブツリー内のノードの数ですがルート(ルートを含む)であるツリーの下のノードの数です。μ′>μμ′>μ\mu' \gt \mu|NL||NL||N_L|NNN|N||N||N|NNN このトピックに関する文献のいくつかでは、これらはウェイトバランスツリーと呼ばれています。 ノードを持つバイナリツリーが -balanced(定数)である場合、ツリーの高さはであるため、適切な検索を維持できることがわかります。プロパティ。nnnμμ\muμ>0μ>0\mu \gt 0O(logn)O(logn)\mathcal{O}(\log n) 質問は次のとおりです。 いくつかありますすべてのビッグ十分な赤黒木があるように、 -balancedは?μ>0μ>0\mu \gt 0μμ\mu 使用する赤黒木の定義(Cormenらによるアルゴリズムの紹介から): 各ノードが赤または黒に色付けされているバイナリ検索ツリー 根は黒です すべてのNULLノードは黒です ノードが赤の場合、その子は両方とも黒です。 各ノードについて、そのノードから子孫NULLノードへのすべてのパスには、同じ数の黒いノードがあります。 注:上記の -balancedの定義では、NULLノードはカウントしません。(私たちがそうするかどうかは問題ではないと思いますが)。μμ\mu