Quindi ho appena imparato alberi neri rossi a Cormen e wow! In genere mi piace comprendere tutti gli algoritmi e le strutture di dati al punto da poterli ricostruire da zero senza dover imbrogliare guardando lo pseudo codice. Mi piacciono molto gli algoritmi, quindi mi piace imparare come funzionano e di solito vado riga per riga e provo alcuni casi guardando il codice e controllando se ciò che sta accadendo è ciò che ho capito che dovrebbe accadere.
La sola comprensione di ciò che sta accadendo mi ha richiesto MOLTO tempo per gli alberi RB. Anche con le spiegazioni del libro, ho ancora trovato difficile capire il codice. Per non parlare del fatto che non sono riuscito a capire come / perché le rotazioni funzionano. Non lo trovo affatto intuitivo. Voglio dire, i tre (sei in realtà) diversi casi per l'inserimento e poi i 4 casi per la cancellazione? È possibile capire questa cosa? È impossibile per me ricostruire questo codice senza imbrogliare. Fino a quando l'albero binario potrei implementare la roba dalla mia testa, con alcune modifiche funzionerebbe sempre, ma gli alberi RB non ci proverò nemmeno. Voglio dire, anche l'insegnante a volte si confonde, quindi suppongo che non sia così facile, ma allo stesso tempo, non dovremmo capire tutto ciò che sta accadendo o almeno perché? Il libro non ha Spiego davvero come qualcuno ha avuto l'idea delle rotazioni. In che modo qualcuno ha notato che con 2 rotazioni è stato possibile risolvere qualsiasi problema di inserimento? È stupefacente!
La mia domanda è: devo davvero capire al 100% gli alberi RB? Mi sento un po 'male saltare cose senza comprenderle appieno. Grazie in anticipo ragazzi! (PS: non esiste un tag per RB-tree, in realtà nemmeno per tree, solo binary-tree, quindi metto solo algoritmi)