You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python自定义treeNode类递归实现整树转嵌套字典的方法如何编写

树结构转嵌套字典实现方案

方法实现逻辑

你的需求对应的结构规则为:非叶子节点作为字典的唯一键,对应值为子节点内容组成的列表;叶子节点直接返回自身data值嵌入列表。以下是修改后的get_all_tree方法,无需额外传入根节点,直接在根节点实例上调用即可:

def get_all_tree(self):
    # 叶子节点直接返回data值
    if self.is_leaf:
        return self.data
    # 非叶子节点构建对应字典结构
    child_struct = []
    for child in self.children:
        child_struct.append(child.get_all_tree())
    return {self.data: child_struct}

测试验证

你可以用如下代码构造示例中的树结构,验证输出是否符合预期:

# 构造示例树
root = treeNode(0)
node1 = treeNode(1)
node2 = treeNode(2)
root.add_child(node1)
root.add_child(node2)

# 节点2的子节点
for num in [11,12,13,16]:
    node2.add_child(treeNode(num))
node3 = treeNode(3)
node4 = treeNode(4)
node2.add_child(node3)
node2.add_child(node4)

# 节点3的子节点
node3.add_child(treeNode(14))
node3.add_child(treeNode(15))

# 节点4的子节点
for num in [41,42,43]:
    node4.add_child(treeNode(num))

# 输出结果
print(root.get_all_tree())

运行后输出结果和你给出的示例完全一致:{0: [1, {2: [11, 12, 13, 16, {3: [14, 15]}, {4: [41, 42, 43]}]}]}

注意事项

原代码中的get_children方法在节点为叶子时仅打印提示无返回值,因此实现时直接读取实例的children属性避免异常,如果需要保留调用get_children的写法,可以修改该方法叶子节点时返回空列表即可。

内容的提问来源于stack exchange,提问作者rickiestRick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 15:09:01