Allora andiamo sul tecnico:
un RBtree, e anche la tua specifica implementazione, non e' niente altro che un albero binario bilanciato, mantenuto in memoria.
La sua utilita' (non la tua specifica implementazione, ma in generale), come specifica implementazione, e' tale nel momento in cui implementa una interfaccia, inerfaccia comune a una categoria di strutture dati aventi specifiche proprieta'.
Questo fa si che un'applicazione, che richiede l'utilizzo di quella specifica interfaccia, possa beneficiare di una o dell'altra implementazione, in base alla tipologia di operazioni prevalenti.
Ora, in una struttura dati come un albero binario, indipendentemente dalla sua implementazione, le principali operazioni che vengono fatte sono:
1) inserimento
2) rimozione
3) ricerca
4) iterazione (scansione di tutti gli elementi)
Nella ricerca, ci sono diverse possibilita':
3.1) ricerca di uno specifico elemento
3.2) ricerca del minimo/massimo
3.3) ricerca di un range di valori
Stessa cosa per l'iterazione:
4.1) scansione di tutti gli elementi
4.2) scansione di un sottoinsieme ordinato degli elementi
Ad esempio, la ricerca del massimo/minimo e' inefficiente in una struttura dati basata su una hasmap, perche' richiede scandire la struttura dati sequenzialmente. Invece puo' essere estremamente efficiente in una struttura ad albero, se bilanciato.
Poi, ovviamente, ci possono essere altre operazioni.
E' ovvio che il bilanciamento non e' di competenza dell'applicazione che usa l'interfaccia.
Quindi, per dimostrare che la tua speciica implemetazione e' piu' meglio dell'implementaione classica, o di quella di default, devi dimostrarne quale e' la complessita' computazionale media e massima. Ed informazioni sulla quantita' di memoria allocata, sempre in riferimento all'implementazione classica.
Ovviamente non sto' parlando di secondi o megabyte!
A questo punto, devi fare delle statistiche, confrontando la tua implementazione con altre implementazioni, e fare dei diagrammi che mostrano le migliori/peggiori performance della tua implementazione rispetto alle altre.
Fatto questo, puoi proporre la tua implementazione come valida alternativa all'implementazione standard. Ci sono diversi siti in cui puoi esporre la tua soluzione, ma dipende dal linguaggio di programmazione usato.
Ad esempio:
stackoverflow
boost
codeguru
i primi che mi sono venuti in mente.
Ripeto: non si fa MAI un uso diretto di una specifica implementazione di una struttura dati di basso livello, ma si passa sempre attraverso un'interfaccia, perche' quella stuttura dati potrebbe presentare dei problemi durante l'evoluzione del programma che la usa.
E comunque e' buona pratica di programmazione non dipendere mai direttamente da una specifica implementazione di qualsiasi cosa.