Python 二叉搜索树中的最小元素

Python 二叉搜索树中的最小元素,python,algorithm,data-structures,tree,Python,Algorithm,Data Structures,Tree,给定一个二叉搜索树。任务是找到给定BST中的最小元素 Example 1: Input: 5 / \ 4 6 / \ 3 7 / 1 Output: 1 Example 2: Input: 9 \ 10 \

给定一个二叉搜索树。任务是找到给定BST中的最小元素

Example 1:

Input:
           5
         /    \
        4      6
       /        \
      3          7
     /
    1
Output: 1

Example 2:

Input:
             9
              \
               10
                \
                 11
Output: 9
您的任务: 任务是完成函数minValue(),该函数以root作为参数并返回BST的最小元素。如果树为空,则没有最小元素,因此在这种情况下返回-1

我的代码:

def minValue(root):
   if root is None:
       return -1
   elif root.left is None:
       return root.data
   else:
       minValue(root.left)

这段代码为我提供了每个测试用例的输出None,而如果我在else条件中将
minValue(root.left)
更改为
returnminvalue(root.left)
,我得到了正确的答案。有谁能告诉我发生这种情况的原因吗?

每个Python函数都会返回一些东西。如果函数在没有返回的情况下退出,则返回值为None。如果第一个if语句为true,则代码返回-1。如果elif为真,则返回root.data。否则,它将返回None,因为执行else分支,并且该分支不返回任何内容。它调用minValue,但实际上没有做任何事情,因为您没有在那里返回任何东西。函数完成后,代码一直到结尾,因此Python返回None。

在第二种情况下,您没有添加return语句,因此输出显示为None,因为实际上没有返回任何内容。把它改成

def最小值(根):
如果root为None:
返回-1
elif root.left为无:
返回root.data
其他:
返回最小值(root.left)

如果没有返回声明,您会将孩子的解决方案扔进空白处。请您详细说明,先生。不知道如何操作。如果左边的子项具有最小值,而您不返回它,则它将永远消失。考虑<代码> DEFADD(A,B):返回A+B < /代码>和<代码> DEFADD(A,B):A+B < /代码>。第二个有什么用吗?同样的问题,这能回答你的问题吗?