У меня есть данные, хранящиеся в листьях дерева. Доступ к листьям осуществляется с помощью ключа, который является кортежем объектов. Дерево потенциально огромно, и я хотел бы его конденсировать. Например:Дерево с повторяющимися записями у листьев
*
/\
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++ в том случае, если кто-то вдохновляется поделиться проблемами с кодом.
Звучит довольно похоже на создание чего-то вроде Патриции. –
Я могу использовать что-то подобное в составе конденсации, но мне нужно что-то еще. – AbleArcher
Каким образом это дерево поиска? –