Ecco la fonte della mia domanda.
Dato un albero auto-bilanciamento (AVL), codificare un metodo che restituisce la mediana.
(Mediana: il valore numerico che separa la metà superiore di un campione di dati dalla metà inferiore. Esempio: se la serie è
2, 7, 4, 9, 1, 5, 8, 3, 6
allora la mediana è 5.)
Posso offrire la seguente soluzione:
- Attraversa l'albero dato, restituisce il numero di elementi.
- Attraversa
n / 2 + 1
(sen
è dispari) di nuovo l'albero applicando una camminata dell'albero in ordine. Il valoren / 2 + 1
dell'elemento th è la mediana.
Ma posso farlo con un albero di ricerca binario, no? Esiste un algoritmo migliore per un AVL?