我将数据存储在树的叶子中。使用作为对象元组的键访问叶子。这棵树可能很大,我想浓缩它。例如:
*
/ \
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
代表 a1
或5
。当然,由于必须检查 set 中的成员身份,查找速度会减慢A
。我正在寻找描述此数据结构和相关过程的来源。
我正在使用 c++,以防有人受到启发来分享相关的代码问题。