Возможно, вам не нужна иерархия, а вместо этого - коллекция тегов для каждого значка. Затем вы можете выбрать только значки, которые имеют все запрошенные теги.
Настоящая проблема - это проблема Родителя / Дитя. У икон детей есть родители, или у родителей есть дети? Если вы говорите, что у родителей есть дети, вы удваиваете детей в иерархии, потому что каждый из детей должен находиться под каждым из родителей. То же самое верно, если вы посмотрите на это с противоположной стороны. Часто лучше (особенно для того, что вы предлагаете) просто назначить атрибуты каждому «человеку» того, кто их дети и кто их родители. Затем вы можете позволить пользователю решить, как выглядит дерево.