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

如何修复TreeNode二叉树转元组的tree_to_tuple函数UnboundLocalError报错

报错根因

原tree_to_tuple函数存在3个核心逻辑缺陷:

  • 未处理node is None的递归终止场景,遍历到空节点时直接进入后续分支逻辑
  • 分支判断覆盖不全,node_left/node_mid/node_right三个变量仅在部分分支中赋值,未覆盖的分支会触发变量未定义报错
  • 未匹配parse_tuple的转换规则:叶子节点(左右子树均为空)在元组中是单个值,原函数统一返回三元组,会导致转换前后格式不一致
修复后代码
def tree_to_tuple(node):
    # 递归终止:空节点直接返回None
    if node is None:
        return None
    # 递归终止:叶子节点直接返回key,匹配parse_tuple的规则
    if node.left is None and node.right is None:
        return node.key
    # 非叶子节点递归处理左右子树,组装三元组
    left_tuple = tree_to_tuple(node.left)
    mid_val = node.key
    right_tuple = tree_to_tuple(node.right)
    return (left_tuple, mid_val, right_tuple)

运行原测试代码,输出结果和输入的tree_tuple完全一致,转换正确性可以得到验证。

逻辑优化建议
  • 增加参数类型校验,传入非TreeNode且非None的入参时直接抛出明确的参数错误,避免隐式报错
  • 二叉树深度超过Python默认递归深度(默认1000)时会触发栈溢出,针对极深的树可以将递归实现改为迭代的深度优先/广度优先遍历实现
  • 可以增加转换前后的一致性校验逻辑,转换完成后自动用parse_tuple解析输出的元组,和原节点比对结构与值是否匹配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 00:15:06