【发布时间】:2011-05-15 21:30:19
【问题描述】:
我正在寻找一种数据结构,它基本上是一棵地图树,其中每个节点的地图都包含一些新元素,以及其父节点地图中的元素。这里的 map 是指带有键和值的编程映射,例如 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 是节点上的元素总数,而不是整个树。
我在想也许我可以使用一个智能哈希函数,但我想不出任何东西。
天真的方法是将新添加的条目存储在每个节点的映射中,然后如果找不到任何内容,则向上移动树。我不喜欢这样,因为它取决于树的深度。
【问题讨论】:
标签: data-structures maps hash hierarchical-trees