Estoy buscando una estructura de datos, que es básicamente un árbol de mapas, donde el mapa en cada nodo contiene algunos elementos nuevos, así como los elementos en el mapa de su nodo padre. Por mapa aquí me refiero a un mapa de programación con claves y valores, como mapa en STL o dict en python.
Por ejemplo, puede haber un nodo raíz:
root = {'car':1, 'boat':2}
y 2 hijos, cada uno agregando un elemento al mapa padre
child1 = {'car':1, 'boat':2, 'jet':35}
child2 = {'car':1, 'boat':2, 'scooter':-5}
Me gustaría que esto sea lo más eficiente posible en cuanto al espacio, es decir, no quiero almacenar una copia completa del mapa resultante en cada nodo, pero idealmente la búsqueda sería O (log N), siendo N el número total de elementos en el nodo, no todo el árbol.
Estaba pensando que tal vez hay una función inteligente de hash que podría usar para esto, pero no se me ocurrió nada.
El enfoque ingenuo sería almacenar las entradas recién agregadas en un mapa en cada nodo y luego subir al árbol si no se encuentra nada. No me gusta esto porque depende de la profundidad del árbol.