Рекурсивное добавление узлов к дереву zss - PullRequest
0 голосов
/ 21 сентября 2018

Я хочу сравнить расстояния между деревьями с помощью модуля zss.Для этого я пытаюсь создать деревья путем рекурсивного добавления узлов.К сожалению, в документации приводятся только примеры, в которых деревья создаются со всеми узлами одновременно, и я не могу понять, как перейти к дочернему элементу, чтобы добавить еще один узел после создания объекта дерева.

Вот простой пример:

from zss import Node
A = (
    Node("f")
        .addkid(Node("a")
            .addkid(Node("h"))
            .addkid(Node("c")))
        .addkid(Node("e"))
    )

B = (
    Node("f")
        .addkid(Node("a")
            .addkid(Node("h"))
            .addkid(Node("c")
                .addkid(Node("l"))))
        .addkid(Node("e"))
    )

Все, что я сейчас пытаюсь сделать, это добавить дочерний элемент "l" к узлу "c" в дереве A, так что A == B. Любая помощь приветствуется.

1 Ответ

0 голосов
/ 21 сентября 2018

Посмотрев на zss, я вижу, что это может работать с simple_tree, который он использует:

A.get('c').addkid(Node('l'))

Кажется, используются метки, которые, вероятно, должны бытьуникальный.Таким образом, get на самом деле возвращает первый узел с этой меткой, найденной при первом глубинном поиске.

A.get('f').get('a').get('c').addkid(Node('l'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...