python - 在 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
在分配给任何东西之前会返回,但是我认为在这一行上方的代码中,我已经涵盖了所有可能的情况,并且“输出”将等于一个值。
任何想法为什么我会遇到这个错误?
解决方案
推荐阅读
- javascript - 检查嵌套数组中的相同值
- go - 为什么它不能打印价值
- amazon-web-services - 配置 vscode 以使用 AWS 配置文件运行测试
- python - 将 bigquery 表的大量数据提取到多个文件中到本地而不是谷歌存储
- button - Extjs 中的收藏夹/星标/书签切换按钮
- c# - Helix Toolkit 视图立方体未显示
- python - 如何在 python 中添加换行符?
- rsync - rsync with inplace 删除目录
- swift - 将 SwiftUI 视图设置为 NSMenuBarItem 视图属性
- html - 物化 CSS coverTrigger 属性不起作用