Sobes.tech
Junior — Middle

İkili ağac balanslı struktur vəziyyətidir?

sobes.tech Süni İntellekt

AI-dan cavab

Özündə ikili ağac mütləq balanslı struktur deyil. Balanslı ikili ağac hər bir düyünün sol və sağ alt ağaclarının hündürlükləri ən çox 1 fərqlənir. Bu xüsusiyyət effektiv giriş, əlavə və silmə əməliyyatlarını təmin edir.

Əgər ikili ağac balanslı deyilsə, ən pis halda, əlaqəli siyahıya bənzər bir struktur halına gələ bilər və bu, əməliyyatların performansını pisləşdirər.

Go dilində balans yoxlamanın nümunəsi (sadələşdirilmiş):

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
}

Beləliklə, ikili ağac onun strukturu və quruluş qaydalarına görə balanslı və ya balanssız ola bilər.