如何在Python中构建组合树?

时间:2017-03-28 23:47:27

标签: python data-structures tree

我有以下两个Node和Tree的类

节点:

class Node:

    def __init__(self, identifier):
        self._children = []
        self._identifier = identifier

    def add_children(self, node):
       self._children.append(node)

    def get_children(self):
       return self._children

具有级别的树:

class Tree:
    def __init__(self):
        self._levels = {}

    def add_levels(self, index, nodes):
        self._levels[index] = nodes

    def __getitem__(self, index):
        # further stuff
        return self._levels[index]

    def __len__(self):
        return len(self._levels)

我想构建一个组合树,如下所示。每个节点的标识符为n(例如,12,13,23是已知的)。如何以递归方式构建树,以便树的每个级别都有一个节点列表?

Tree List of Nodes

1 个答案:

答案 0 :(得分:-1)

使用类方法,我可以构建一个树:

<form #myForm="ngForm">
  <div *ngFor="let field of connector.configFields; let i = index">
    <input name="f{{i}}" [(ngModel)]="field.value" [type]="field.name === 'Password' ? 'password' : 'text'" required #f="ngModel" minlength="2"/>
    <div *ngIf="f.errors && (f.dirty || f.touched)">
      <div *ngIf="f.errors.required"> This field is required </div>
      <div *ngIf="f.errors.minlength"> Min 2 chars </div>
    </div>
  </div>
</form>

但不确定如何访问节点数据,而不是获取他们的实例:

root = Node(0)
n1 = Node(1)
n2 = Node(2)
n3 = Node(3)
n12 = Node(12)
n13 = Node(13)
n23 = Node(23)
n123 = Node(123)

n12.add_children(n123)
n1.add_children([n12, n13])
n2.add_children(n23)
root.add_children([n1, n2, n3])

t = Tree()

t.add_levels(0, root)
t.add_levels(1, [n1, n2, n3])
t.add_levels(2, [n12, n13, n23])
t.add_levels(3, [n123])

输出:

for l in range(len(t)):
    print t[l]

但至少这会回答你如何构建树的问题。

希望这有帮助。