Sobes.tech
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
}

Այսպիսով, բինարային ծառը կարող է լինել ինչպես հավասարակշռված, այնպես էլ ոչ, կախված կառուցվածքից և կառուցման կանոններից։