【发布时间】:2013-06-07 22:49:09
【问题描述】:
我将数据存储在树的叶子中。使用作为对象元组的键访问叶子。这棵树可能很大,我想浓缩它。例如:
*
/ \
a b
/|\ \
1 2 5 1
/ /| |\ |\
x x y x z y z <-- Leaves
| | | | | | |
1 2 7 1 3 1 1 <-- Values at leaves
元组(*, a, 1, x) 和(*, a, 5, x) 都在叶子上导致1 的值,因此可以将树压缩为:
*
/ \
a b
/ \ \
A 2 1
/| /| |\
x z x y y z
| | | | | |
1 3 2 7 1 1
其中A 代表1 或5。当然,由于必须检查集合A 中的成员身份,查找速度会减慢。我正在寻找描述此数据结构和相关过程的来源。
我正在使用 c++,以防有人受到启发分享相关代码问题。
【问题讨论】:
-
听起来很像构建 Patricia trie 之类的东西。
-
我可能会使用类似的东西作为冷凝的一部分,但我还需要更多的东西。
-
这是一个怎样的搜索树?
-
我删除了搜索形容词。谢谢。 (我应该怎么称呼它?)
-
这是我对您要求的理解。假设有从
1到h的h级别。如果在每个级别(任何 1 级别除外)路径中的元素相同,则将两个根路径合并到叶路径
标签: c++ algorithm data-structures tree