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

Python代码中root_a返回None值的原因排查求助

问题原因与解决方法

问题根源

你的find_root函数存在返回值缺失的问题:当x != root_list[x]时,递归调用find_root(root_list[x])并更新root_list[x]后,没有将最终找到的根节点返回。这就导致函数执行到这里时默认返回None,也就是你遇到的root_a为None的情况。

修复后的代码

node, edge = list(map(int, input().split()))
root_list = [x for x in range(node)]


def find_root(x):
    print(x, 'x')
    if x == root_list[x]:
        return x
    root_x = find_root(root_list[x])
    root_list[x] = root_x
    return root_x  # 新增这行,返回找到的根节点


for _ in range(edge):
    a, b = list(map(int, input().split()))
    a = a - 1
    b = b - 1
    root_a = find_root(a)
    root_b = find_root(b)
    print(root_a, root_b, 'root')
    if root_a != root_b:
        root_list[b] = root_a
    print(root_list)

验证说明

当处理输入2 4(转换为索引1和3)时,修复后的find_root(1)会递归找到根节点0,更新root_list[1] = 0后返回0,此时root_a就能正确拿到根节点值,不会再出现None。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 20:40:29