我正在寻找一种数据结构,它基本上是一棵地图树,其中每个节点的地图都包含一些新元素,以及其父节点地图中的元素。这里的映射是指带有键和值的编程映射,例如 STL 中的 map 或 python 中的 dict。
例如,可能有一个根节点:
root = {'car':1, 'boat':2}
和 2 个孩子,每个孩子都向父地图添加一个元素
child1 = {'car':1, 'boat':2, 'jet':35}
child2 = {'car':1, 'boat':2, 'scooter':-5}
然后我的搜索将在节点上执行。因此,例如 child1['jet'] 返回 35,但 root['jet'] 返回未找到错误。
我希望这尽可能节省空间,即我不想在每个节点存储结果映射的完整副本,但理想情况下查找仍然是 O(log N),N 是总数节点上的元素,而不是整个树。
我在想也许我可以使用一个智能哈希函数,但想不出任何东西。
天真的方法是将新添加的条目存储在每个节点的映射中,然后如果找不到任何内容,则向上移动树。我不喜欢这个,因为它取决于树的深度。