可以使用哪种算法来构建复杂的子级树?

时间:2019-07-08 16:01:39

标签: python algorithm hierarchy

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

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

我支持以下实体类型:

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

我需要为这些实体构造一个可能无限的(宽)树,只有1个约束:

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

entity_b只能包含entity_c,entity_d和

的子级

entity_c只能包含entity_d的子项,

entity_d不能有孩子

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

这里的深度最多为4层,但是宽度可以是无限的

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

1 个答案:

答案 0 :(得分:1)

我建议可能可行的最简单的方法。

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))