Построение дерева в Python с поддержкой "parent" - PullRequest
0 голосов
/ 08 мая 2019

Проблема: дитя корня имеет себя как дитя.Я новичок в построении структур данных в Python, поэтому я пишу код, как если бы я писал на C ++.Вот мой код:

class node:
    key = None
    value = None
    parent = None
    children = []

    def __init__(self,key,val):
        self.key = key
        self.val = val

if __name__ == "__main__":
    root = node(50,50)
    child = node(20,20)
    child.parent = root
    root.children.append(child)
    print(root)
    print(child)
    print(root.children)
    print(child.parent)
    print("Why does child have itself as a child??!!")
    print(child.children)

Я не могу понять, в чем проблема.

1 Ответ

1 голос
/ 08 мая 2019

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

class Node:
    def __init__(self, key, val):
        self.key = key
        self.val = val
        self.children = []
        self.parent = None

root = node(50, 50)
child = node(20, 20)
child.parent = root
root.children.append(child)

Вы можете изменить __init__, чтобы упростить построение дерева.

class Node:
    def __init__(self, key, val, parent=None):
        self.key = key
        self.val = val
        self.parent = parent
        if parent is not None:
            parent.children.append(self)

root = node(50, 50)  # sets root.parent = None
child = node(20, 20, root)  # sets child.parent = root and adds child to root.children
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...