微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决二进制搜索树中的最小元素

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

解决方法

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

,

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。