为什么在搜索目标节点时我的 BST 的基本情况不是 运行?
Why are the base cases for my BST not running when searching for a target node?
我正在解决一个 Binary search tree
问题,其中给定一个 target node
,并且想要 return 值最接近 BST 中此目标的节点。
这是我的代码:
def findClosestValueInBst(tree, target):
if target == tree.value:
return target
if target<tree.value and not tree.left:
return tree.value
if not tree.right and target > tree.value:
return target
if target < tree.value:
findClosestValueInBst(tree.left, target)
else:
findClosestValueInBst(tree.right, target)
正在为许多测试用例重新调整 'None'
。但是运行通过纸上的代码,它应该可以工作。
这是因为在 if target<tree.value and not tree.left
和 if not tree.right and target > tree.value
的情况下,基本情况不是 运行...
但是知道为什么它不执行吗? - 因为我似乎无法弄明白!
举个例子:
对于下面,我用我的代码跟踪树到节点 13,然后 13.left 是 None,所以我们应该 return tree.value,但是这个由于某种原因没有执行。
您忘记为递归调用添加 return 语句。使用以下部分,它应该按预期工作。
if target < tree.value:
return findClosestValueInBst(tree.left, target)
return findClosestValueInBst(tree.right, target)
我正在解决一个 Binary search tree
问题,其中给定一个 target node
,并且想要 return 值最接近 BST 中此目标的节点。
这是我的代码:
def findClosestValueInBst(tree, target):
if target == tree.value:
return target
if target<tree.value and not tree.left:
return tree.value
if not tree.right and target > tree.value:
return target
if target < tree.value:
findClosestValueInBst(tree.left, target)
else:
findClosestValueInBst(tree.right, target)
正在为许多测试用例重新调整 'None'
。但是运行通过纸上的代码,它应该可以工作。
这是因为在 if target<tree.value and not tree.left
和 if not tree.right and target > tree.value
的情况下,基本情况不是 运行...
但是知道为什么它不执行吗? - 因为我似乎无法弄明白!
举个例子:
对于下面,我用我的代码跟踪树到节点 13,然后 13.left 是 None,所以我们应该 return tree.value,但是这个由于某种原因没有执行。
您忘记为递归调用添加 return 语句。使用以下部分,它应该按预期工作。
if target < tree.value:
return findClosestValueInBst(tree.left, target)
return findClosestValueInBst(tree.right, target)