首页 > 解决方案 > 哪种算法可以用来构建复杂的子树?

问题描述

我有一个“实体”对象,这个实体包含一个 entity_type 属性,以最简单的形式:

   class Entity:
       def __init__(entity_type: str):
           self.entity_type = entity_type

我支持以下实体类型:

    {'entity_a', 'entity_b', 'entity_c', 'entity_d'}

我需要构建这些实体的潜在无限(宽)树,只有一个约束:

entity_a 只能包含 entity_b、entity_c 和 entity_d 的孩子,

entity_b 只能包含 entity_c、entity_d、

entity_c 只能包含 entity_d 的孩子,

entity_d 不能有孩子

entity_a 可能有 50 个 entity_b,其中可能有 50 个 entity_c,其中可能有 50 个 entity_d。

这里的深度最多为 4 层,但宽度可以不受限制

可以针对此问题实施哪些方法/算法?提供一种相对简单的方法来构建各种实体层次结构?

标签: pythonalgorithmhierarchy

解决方案


我会建议可能可行的最简单的事情。

class InvalidEntityType(Exception):
    pass

class Entity:
    def __init__(entity_type: str):
        self.entity_type = entity_type
        self.entities = []

    def add_entity(self, entity):
        if self.entity_type < entity.entity_type:
            self.entities.append(entity)
        else:
            raise InvalidEntityType(
                "Entity of type {0} cannot contain entities of type {1}".format(
                    self.entity_type, entity.entity_type))

推荐阅读