首页 > 解决方案 > 在 BST 中找到最接近目标的值,但在赋值之前遇到引用的变量,即使我已经涵盖了所有情况?

问题描述

我正在编写代码来解决以下问题:给定一个二叉搜索树和一个目标整数值。我们的任务是在 BST 中找到最接近这个目标的值。

这是我的代码:

def findClosestValueInBst(tree, target,):
    return findClosestValueInBstHelper(tree, target, float("inf"))

def findClosestValueInBstHelper(tree, target,closest):
    if tree.value == target: 
        return target
    if not tree:
        return closest
    closer = min(abs(target - tree.value), closest)
    if abs(target - tree.value)<closest:
        output = tree.value
    if tree.value<target and tree.right: 
        return findClosestValueInBstHelper(tree.right,target,closer)
    elif tree.value>target and tree.left:
        return findClosestValueInBstHelper(tree.left, target, closer)
    
    elif tree.value<target and not tree.right: 
        if abs(target-tree.value)<closest:
            return tree.value
    elif tree.value>target and not tree.left: 
        if abs(target-tree.value)<closest:
            return tree.value
    return output

现在我的代码通过了一半的测试用例,但另一半失败了,'output referenced before assignment'最后一行我遇到了错误——我知道这意味着什么;代码output在分配给任何东西之前会返回,但是我认为在这一行上方的代码中,我已经涵盖了所有可能的情况,并且“输出”将等于一个值。

任何想法为什么我会遇到这个错误?

标签: pythonrecursion

解决方案


推荐阅读