узлы дерева, определенные деревом - PullRequest
0 голосов
/ 01 июля 2019

Я работаю с деревьями в python, и эту проблему я пытаюсь решить.

Все мои узлы имеют списки. Для каждого родителя списки детей извлекаются из списка родителей, удаляя по одному элементу за раз.

Допустим, node1 - это список1 [1,2,3] Я хочу иметь 3 дочерних элементов (в данном случае) для node1, где каждый дочерний элемент представляет собой список, извлеченный из списка. 1, удаляя по одному элементу за раз. и так узел2 = [2,3] узел3 = [1,3] и узел4 = [1,2]

Я работаю с anytree библиотекой, но не могу найти достаточно документации по сложным узлам. В настоящее время я написал этот метод, но я сомневаюсь в синтаксисе:

  from anytree import Node, RenderTree
 #some othercode
    def createNodes(parentnode):
        for i in (0,K,1):
            childnode=Node(parentnode.pop(i), parent=parentnode)
            return childnode

этот код работает как решение? PS: это учебник, которому я следовал на Anytrees [https://anytree.readthedocs.io/en/2.6.0/intro.html#basics][1]

1 Ответ

1 голос
/ 01 июля 2019

Попробуйте:

class Node:
    def __init__(self, data):
        self.data = data
        self.child = 3*[None]
        for i in range(len(data)):
            elem = data.pop(i)
            self.child[i] = data
            print(self.child[i])
            data.insert(i, elem)


data = [1, 2, 3]
root = Node(data)

вывод:

[2, 3]
[1, 3]
[1, 2]

В качестве альтернативы, вы можете попробовать это:

class Node:
    def __init__(self, data, parent):
        self.parent = parent
        self.data = data

def createNodes(parentnode):
    data = parentnode.data
    for i in range(len(data)):
        elem = data.pop(i)
        childnode = Node(data, parent=parentnode)
        print(childnode.data)
        data.insert(i, elem)

root = Node([1, 2, 3], None)
createNodes(root)

вывод:

[2, 3]
[1, 3]
[1, 2]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...