มีหลายวิธีในการกำหนด "สมดุล" O(log(n))
เป้าหมายหลักคือการรักษาระดับความลึกของโหนดทั้งหมดจะเป็น
ปรากฏให้ฉันว่าสภาพความสมดุลที่คุณกำลังพูดถึงสำหรับต้นไม้ AVL
นี่คือคำจำกัดความอย่างเป็นทางการของสภาพสมดุลของต้นไม้ AVL :
สำหรับโหนดใด ๆ ใน AVL ความสูงของทรีย่อยด้านซ้ายจะแตกต่างกันมากที่สุด 1 จากความสูงของทรีย่อยด้านขวา
คำถามต่อไป " ความสูง " คืออะไร?
" ความสูง " ของโหนดในต้นไม้ไบนารีคือความยาวของเส้นทางที่ยาวที่สุดจากโหนดนั้นไปยังใบไม้
มีกรณีแปลก ๆ แต่พบได้บ่อย:
(-1)
คนกำหนดความสูงของต้นไม้ที่ว่างเปล่าให้เป็น
ตัวอย่างเช่นลูกด้านซ้ายของรูทคือnull
:
A (Height = 2)
/ \
(height =-1) B (Height = 1) <-- Unbalanced because 1-(-1)=2 >1
\
C (Height = 0)
อีกสองตัวอย่างเพื่อพิจารณา:
ใช่ตัวอย่างต้นไม้ที่สมดุล :
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)