Junior — Middle
Czy drzewo binarne jest zrównoważonym stanem strukturalnym?
sobes.tech AI
Odpowiedź od AI
Drzewo binarne samo w sobie nie musi być strukturą zrównoważoną. Zrównoważone drzewo binarne to takie, w którym wysokości lewego i prawego poddrzewa każdego węzła różnią się nie więcej niż o 1. Ta właściwość zapewnia efektywny dostęp, wstawianie i usuwanie elementów.
Jeśli drzewo binarne nie jest zrównoważone, w najgorszym przypadku może przekształcić się w strukturę podobną do listy powiązanej, co pogorszy wydajność operacji.
Przykład sprawdzania zrównoważenia w Go (uproszczony):
func isBalanced(root *TreeNode) bool {
if root == nil {
return true
}
leftHeight := height(root.Left)
rightHeight := height(root.Right)
if abs(leftHeight - rightHeight) > 1 {
return false
}
return isBalanced(root.Left) && isBalanced(root.Right)
}
func height(node *TreeNode) int {
if node == nil {
return 0
}
leftHeight := height(node.Left)
rightHeight := height(node.Right)
if leftHeight > rightHeight {
return leftHeight + 1
}
return rightHeight + 1
}
func abs(a int) int {
if a < 0 {
return -a
}
return a
}
W związku z tym, drzewo binarne może być zarówno zrównoważone, jak i niezrównoważone, w zależności od struktury i zasad budowy.