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.