Junior — Middle
Vai binārais koks ir līdzsvarots strukturālais stāvoklis?
sobes.tech AI
Atbilde no AI
Pašā pašā laikā binārais koks nav obligāti līdzsvarota struktūra. Līdzsvarots binārais koks ir tāds, kur katra mezgla kreisās un labās apakškoku augstumi atšķiras ne vairāk kā par 1. Šī īpašība nodrošina efektīvu piekļuvi, ievietošanu un dzēšanu.
Ja binārais koks nav līdzsvarots, sliktākajā gadījumā tas var pārvērsties līdzīgā struktūrā kā sasaistīta saraksts, kas pasliktinās operāciju veiktspēju.
Piemērs, kā pārbaudīt līdzsvarotību Go valodā (vienkāršots):
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
}
Tādēļ binārais koks var būt gan līdzsvarots, gan neligzots, atkarībā no tā struktūras un būvniecības noteikumiem.