二进制搜索树中的最小元素

时间:2020-10-28 06:22:26

标签: python algorithm data-structures tree

给出二叉搜索树。任务是在给定的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)更改为return minValue(root.left),我将得到正确的答案。谁能告诉我发生这种情况的原因?

2 个答案:

答案 0 :(得分:1)

每个Python函数都会返回一些信息。如果函数退出而没有返回值,则返回值为None。如果第一个if语句为true,则您的代码将返回-1。如果elif为true,则返回root.data。否则,它返回None,因为采用else分支并且不返回任何内容。它调用minValue,但实际上并没有执行任何操作,因为您在那里没有返回任何内容。函数完成后,代码会一直停留到最后-因此Python返回None。

答案 1 :(得分:0)

在第二种情况下,您尚未添加return语句,因此输出实际上显示为None,因为实际上未返回任何内容。只需将其更改为

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