「バランス」を定義するにはいくつかの方法があります。主な目標は、すべてのノードの深度をに保つことO(log(n))
です。
あなたが話していたバランス状態はAVLツリーのためのものであるように私には思えます。AVLツリーのバランス条件の
正式な定義は次のとおりです。
AVLのノードの場合、左のサブツリーの高さは、右のサブツリーの高さと最大で 1だけ異なります。
次の質問、「身長」とは何ですか?
二分木のノードの「高さ」は、そのノードから葉までの最長経路の長さです。
奇妙で一般的なケースが1つあります。
人は空の木の高さをと定義します(-1)
。
たとえば、ルートの左の子はnull
次のとおりです。
A (Height = 2)
/ \
(height =-1) B (Height = 1) <-- Unbalanced because 1-(-1)=2 >1
\
C (Height = 0)
決定するもう2つの例:
はい、バランスの取れたツリーの例:
A (h=3)
/ \
B(h=1) C (h=2)
/ / \
D (h=0) E(h=0) F (h=1)
/
G (h=0)
いいえ、バランスの取れたツリーの例ではありません:
A (h=3)
/ \
B(h=0) C (h=2) <-- Unbalanced: 2-0 =2 > 1
/ \
E(h=1) F (h=0)
/ \
H (h=0) G (h=0)