Io applicherei la stessa tua idea dell'albero binario multipuntatore ad una lista ordinata.In altre parole costruirei ciascun
nodo della quale contenente 4 puntatori,ad esempio left,right,bottom e up,seguendo il primo si otterrebbe la lista dei nodi
ordinati rispetto alla sinistra,seguendo il secondo alla destra e così via...Ovviamente la lista la devi mantenere ordinata
inserendo in modo ordinato rispetto a ciascuna catena di puntatori,anche la cancellazione deve preservare l'ordine rispetto a
tutte e quattro le catene.La ricerca in questo modo diventa ultra efficiente perchè il più vicino è sempre la testa della
lista,la cancellazione e l'inserimento sono lineari rispetto alla lunghezza delle liste e l'implementazione ha una difficoltà
decisamente gestibile (con gli alberi magari si incasina di più).Ovviamente è una soluzione da adottare se prevedi di fare
molte ricerche e relativamente poche cancellazioni e inserimenti,se il tuo insieme di rettangoli è invece molto dinamico
l'efficienza ne risente e devi trovare qualcos'altro.

Rispondi quotando