Junior — Middle
Je binárny strom vyvážený štrukturálny stav?
sobes.tech AI
Odpoveď od AI
Samostatný binárny strom nie je nevyhnutne vyváženou štruktúrou. Vyvážený binárny strom je taký strom, v ktorom výšky ľavého a pravého podstromu pre každý uzol sa líšia najviac o 1. Táto vlastnosť zabezpečuje efektívny prístup, vkladanie a odstraňovanie prvkov.
Ak binárny strom nie je vyvážený, v najhoršom prípade sa môže zmeniť na štruktúru podobnú prepojenej zoznamu, čo zhorší výkon operácií.
Príklad kontroly vyváženosti v Go (zjednodušený):
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
}
Pretože, binárny strom môže byť buď vyvážený, alebo nie, v závislosti od štruktúry a pravidiel jeho konštrukcie.