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

Python实现:用广度优先搜索统计字典每层节点数量

树形结构广度优先层级节点数统计

需求说明

给定如下嵌套字典表示的树形结构:

d = {'title': 'Root', 'children': [
        {'title': 'Child 1','children': [
            {'title': 'Grandchild 11', 'children': [
                {'title': 'Great Grandchild 111', 'children': []}
            ]}
        ]},
        {'title': 'Child 2', 'children': [
            {'title': 'Grandchild 21', 'children': []}
        ]},
        {'title': 'Child 3', 'children': [
            {'title': 'Grandchild 31', 'children': []}
        ]}
    ]}

需要编写Python函数,接收该字典作为参数,返回整数列表,列表元素为广度优先搜索得到的各层级节点数量。示例预期输出为 [1, 3, 3, 1]。

实现代码

def count_level_nodes(tree):
    if not tree:
        return []
    result = []
    queue = [tree]
    while queue:
        # 统计当前层节点数
        level_size = len(queue)
        result.append(level_size)
        # 遍历当前层所有节点,收集下一层子节点
        for _ in range(level_size):
            node = queue.pop(0)
            queue.extend(node['children'])
    return result

代码说明

  • 用队列实现广度优先遍历:初始时将根节点加入队列
  • 每次循环先获取当前队列长度(即当前层的节点数),加入结果列表
  • 遍历当前层的每个节点,将其所有子节点加入队列,为下一层遍历做准备
  • 循环直到队列为空,此时所有层级的节点数都已统计完成

测试验证

将示例字典传入函数:

print(count_level_nodes(d))  # 输出: [1, 3, 3, 1]

符合预期结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 03:48:36