Una mediana di un AVL. Come sfruttare l'AVL?


8

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:

  1. Attraversa l'albero dato, restituisce il numero di elementi.
  2. Attraversa n / 2 + 1(se nè dispari) di nuovo l'albero applicando una camminata dell'albero in ordine. Il valore n / 2 + 1dell'elemento th è la mediana.

Ma posso farlo con un albero di ricerca binario, no? Esiste un algoritmo migliore per un AVL?


1
Il link risponde già alla tua domanda: cosa stai cercando di più?
Yuval Filmus,

Di solito, gli algoritmi di ricerca per un albero di ricerca binario funzionano con un albero AVL, ma con un AVL si ottiene la garanzia aggiuntiva che l'altezza dell'albero è logaritmica nel numero di nodi.
jmite,

Risposte:


9

Se si modifica l'albero AVL memorizzando la dimensione della sottostruttura in ciascun nodo anziché solo la sua altezza, è possibile trovare la mediana nel tempo utilizzando il fatto che l'albero è bilanciato. Per fare ciò, scrivi una procedura più generale Seleziona che accetta un nodo e un numero e trova il ° nodo più piccolo nella sottostruttura radicata in .O(logn)vkkv

Supponiamo che la sottostruttura sinistra (se presente) abbia nodiSe si ricorre alla sottostruttura sinistra. Se restituiamo . Altrimenti ricorrere alla sottostruttura giusta, riducendo di .LkLk=L+1vkL+1

Il tempo di esecuzione di questo algoritmo è lineare nell'altezza dell'albero, che è .O(logn)


Potresti farmi un esempio, per favore?
Maksim Dmitriev,

No, dovrai costruirne uno tu stesso. Cerca di capire cosa sta cercando di realizzare il mio algoritmo e come.
Yuval Filmus,


0

AVL è un albero di ricerca binario con alcune proprietà speciali: è un albero auto-bilanciante. La sua altezza è sempre logaritmica. L'albero binario ordinario in alcuni scenari peggiori può essere un elenco collegato (se si aggiungono dati ordinati), quindi la sua altezza è n. L'albero AVL nel peggiore dei casi è l'albero dei fibonacci.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.