如何解决二进制搜索树中的最小元素
给出二叉搜索树。任务是在给定的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 举报,一经查实,本站将立刻删除。