Sto cercando una struttura di dati, che è fondamentalmente un albero di mappe, in cui la mappa in ciascun nodo contiene alcuni nuovi elementi, nonché gli elementi nella mappa del nodo principale. Per mappa qui intendo una mappa di programmazione con chiavi e valori, come map in STL o dict in python.
Ad esempio, potrebbe esserci un nodo radice:
root = {'car':1, 'boat':2}
e 2 figli, ognuno aggiungendo un elemento alla mappa principale
child1 = {'car':1, 'boat':2, 'jet':35}
child2 = {'car':1, 'boat':2, 'scooter':-5}
Vorrei che questo fosse il più efficiente possibile in termini di spazio, cioè non voglio archiviare una copia completa della mappa risultante su ciascun nodo, ma idealmente la ricerca sarebbe comunque O (log N), N essendo il numero totale di elementi nel nodo, non l'intero albero.
Stavo pensando che forse c'è una funzione di hash intelligente che potrei usare per questo, ma non sono riuscito a trovare nulla.
L'approccio ingenuo consiste nel memorizzare le voci appena aggiunte in una mappa su ciascun nodo e quindi spostarsi verso l'alto dell'albero se non viene trovato nulla. Non mi piace perché dipende dalla profondità dell'albero.