Junior — Middle
Da li je binarno stablo uravnoteženo strukturno stanje?
sobes.tech АИ
Одговор од АИ
Samostalno binarno stablo nije nužno uravnotežena struktura. Uravnoteženo binarno stablo je takvo u kojem se visine levog i desnog podstabla za svako čvorište razlikuju najviše za 1. Ova osobina obezbeđuje efikasan pristup, umetanje i brisanje elemenata.
Ako binarno stablo nije uravnoteženo, u najgorem slučaju može se pretvoriti u strukturu sličnu povezanoj listi, što će pogoršati performanse operacija.
Primer provere uravnoteženosti u Go (pojednostavljeno):
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
}
Dakle, binarno stablo može biti i uravnoteženo i ne, u zavisnosti od strukture i pravila građenja.