首页 > 解决方案 > 递归地将节点添加到 zss 树

问题描述

我想使用 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”添加到树 A 中的节点“c”,这样 A == B。感谢任何帮助。

标签: pythontree

解决方案


查看后zss,我发现这可能适用于simple_tree它使用的:

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

它似乎使用了可能应该是唯一的标签。因此,get 实际上返回在深度优先搜索期间找到的具有该标签的第一个节点。

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

推荐阅读