繁体   English   中英

二叉搜索树中的最小元素

[英]Minimum Element in Binary Search 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) ,我会得到正确的答案。 谁能告诉我为什么会发生这种情况?

每个 Python 函数都会返回一些东西。 如果函数在没有返回的情况下退出,则返回值为 None。 如果第一个 if 语句为真,您的代码将返回 -1。 如果 elif 为真,则返回 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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM