Sobes.tech
Junior — Middle

Come si determina l'efficienza della ricerca in un albero di dati sbilanciato?

sobes.tech AI

Risposta dell'AI

L'efficienza della ricerca in un albero sbilanciato è determinata dalla profondità del nodo in cui si trova l'elemento cercato. Nel peggiore dei casi, se l'albero si degenera in una lista, il tempo di ricerca diventa lineare — O(n). In media, l'efficienza dipende dalla struttura dell'albero e dalla distribuzione dei dati. Per valutarla, si usa generalmente l'altezza dell'albero: più alto è l'albero, più lunga sarà la ricerca. In Go, si può implementare la ricerca in un albero binario così:

func search(node *Node, key int) *Node {
    if node == nil || node.key == key {
        return node
    }
    if key < node.key {
        return search(node.left, key)
    }
    return search(node.right, key)
}

Se l'albero non è bilanciato, la profondità può essere grande, riducendo l'efficienza.