Mantenendo l'albero di ricerca binario bilanciato

2

Mi sto istruendo su algoritmi e strutture dati. Per questo, sto facendo un semplice programma che dovrebbe leggere righe come questa:

bdhj 168.24
dahf 42.88
dhfa 128.92

La prima colonna rappresenta un nome account (e non deve contenere 4 caratteri) e il secondo rappresenta il valore da aggiungere (o rimuovere se il valore è negativo) a quell'account. Ho un enorme dati di test che potrei profilare diversi algoritmi. Ho provato a mantenere queste informazioni nella lista collegata e negli array dinamici e qualche miscela di questi due finora. Sebbene gli array dinamici siano in grado di consentire la ricerca binaria, l'inserimento di elementi richiede una chiamata a memmove (poiché sto inserendo l'ordinamento) e richiede molto tempo. Voglio provare gli alberi binari di ricerca per questo programma, tuttavia, non ho idea di come mantenere la struttura di ricerca equilibrata. Ho provato la ricerca su google, ma non sono riuscito a trovare spiegazioni su un algoritmo che potrei usare, o su alcun suggerimento. Potresti fornire puntatori e / o fonti che potrei controllare?

    
posta yasar 01.05.2012 - 16:04
fonte

1 risposta

8

Ci sono alcuni alberi auto bilanciati come l'albero rosso-nero e l'albero AVL. Per maggiori informazioni vedi:

Wikipedia: albero di ricerca binaria autobilanciante

Wikipedia: albero rosso-nero

Wikipedia: albero AVL

o Capitolo 13 del libro CRLS

    
risposta data 01.05.2012 - 16:24
fonte

Leggi altre domande sui tag