我将数据存储在树的叶子中。使用作为对象元组的键访问叶子。这棵树可能很大,我想浓缩它。例如:
        *
       / \
      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++,以防有人受到启发来分享相关的代码问题。