Ho difficoltà a capire come implementare e trovare la mediana di un albero di ricerca binario filettato in tempo costante.
L'albero è composto da id e nome del lavoratore.
I dettagli forniti sono dati:
In un albero di ricerca binario con n nodi, ci sono n + 1 puntatori sinistro e destro con il valore NIL. Per ogni nodo z nell'albero eseguiamo la seguente modifica: Se lasciato [z] = NIL allora lasciato [z] ottiene il valore del predecessore dell'albero (z); E se right [z] = NIL allora right [z] ottiene il valore di tree-successor (z).
In sostanza, da quello che capisco è un albero di ricerca binaria doppiamente filettato.
Non sono sicuro di come restituire la mediana in un tempo costante.
Quello che so è che se vogliamo restituire la mediana in O (n) in un normale albero di ricerca binaria, allora si ottiene usando Morris in-order traversal e poi facilmente calcolato se il numero di nodi è pari o dispari .
Tuttavia, come può essere calcolato in tempo costante?
Ho già fatto l'attraversamento con in ordine, post-ordine, pre-ordine usando un tempo lineare con il numero di elementi in esso.
Per favore aiutami, rimani fermo per un bel po '.
grazie mille