为什么在搜索目标节点时我的 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.leftif 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)