Junior — Middle
Արդյո՞ք բինար ծառը հավասարակշռված կառուցվածքային վիճակ է։
sobes.tech AI
Պատասխան AI-ից
Ինքնին բինարային ծառը պարտադիր չէ լինի հավասարակշռված կառուցվածք: Հավասարակշռված բինարային ծառը այն է, որի յուրաքանչյուր հանգույցի ձախ և աջ ենթաէջերի բարձրությունները տարբեր չեն ավելի քան 1-ով: Այս հատկությունը ապահովում է արդյունավետ մուտք, ավելացում և հեռացում տարրերի:
Եթե բինարային ծառը չի հավասարակշռված, ապա ամենավատ դեպքում այն կարող է վերածվել նմանվող կապակցված ցանկի, ինչը կվատթարանա գործողությունների կատարողականությունը:
Օրինակ՝ հավասարակշռության ստուգում Go-ում (պարզեցված տարբերակով):
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
}
Այսպիսով, բինարային ծառը կարող է լինել ինչպես հավասարակշռված, այնպես էլ ոչ, կախված կառուցվածքից և կառուցման կանոններից։