Estou procurando uma estrutura de dados, que é basicamente uma árvore de mapas, onde o mapa em cada nó contém alguns novos elementos, bem como os elementos no mapa do nó pai. Por mapa aqui, quero dizer um mapa de programação com chaves e valores, como mapa no STL ou dict em python.
Por exemplo, pode haver um nó raiz:
root = {'car':1, 'boat':2}
e 2 filhos, cada um adicionando um elemento ao mapa pai
child1 = {'car':1, 'boat':2, 'jet':35}
child2 = {'car':1, 'boat':2, 'scooter':-5}
Eu gostaria que esse espaço fosse o mais eficiente possível, ou seja, não quero armazenar uma cópia completa do mapa resultante em cada nó, mas, idealmente, a pesquisa ainda seria O (log N), sendo N o número total de elementos no nó, não na árvore inteira.
Eu estava pensando que talvez haja uma função de hash inteligente que eu possa usar para isso, mas não consegui criar nada.
A abordagem ingênua seria armazenar as entradas recém-adicionadas em um mapa em cada nó e, em seguida, subir a árvore se nada for encontrado. Não gosto disso porque depende da profundidade da árvore.