Voglio rendere il mio avl-tree
supporto chiavi duplicate ma c'è un problema con il comportamento predefinito dello binary search tree
con duplicati che la rotazione potrebbe fare nodi con chiave uguale sia a sinistra sia a destra di il genitore.Gestione chiavi duplicate all'interno di un albero AVL
Per esempio, quando l'aggiunta di tre nodi il tutto con il tasto A farà sì che l'albero per fare una rotazione di essere qualcosa di simile:
A
/\
A A
in modo da ottenere tutte le voci con quella chiave sarà un problema ... e la ricerca in entrambe le direzioni non è buona.
La soluzione che ho pensato di sta facendo ciascuna esercizi nodo un array di duplicati così quando si aggiunge un nuovo elemento che esiste già sarà solo l'aggiunta di un nuovo elemento dell'array, rimuovendo elemento con chiave verrà cancellata nodo mentre il trova tutti gli elementi con chiave restituirà quell'array.
Esistono altri metodi per gestire i duplicati?
L'elemento di inserimento accetta una chiave e un valore .. quindi è necessario memorizzare i valori in ordine per restituirli tramite findAll con un determinato metodo chiave.
bel approccio :) in realtà ci viene richiesto di fare il metodo di cancellazione cancella tutti gli elementi con quella chiave ... –