【问题标题】:Minimum Element in Binary Search Tree二叉搜索树中的最小元素
【发布时间】:2020-10-28 06:22:26
【问题描述】:

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

Example 1:

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

Example 2:

Input:
             9
              \
               10
                \
                 11
Output: 9

你的任务: 任务是完成以root为参数并返回BST的最小元素的函数minValue()。如果树为空,则没有最小元素,因此在这种情况下返回 -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),我会得到正确的答案。谁能告诉我发生这种情况的原因?

【问题讨论】:

  • 没有return语句,你把孩子的解决方案扔进了虚空。
  • 您能否详细说明,先生。
  • 不确定如何。如果左孩子有最小值并且你不返回它,它就永远消失了。考虑def add(a, b): return a + bdef add(a, b): a + b。第二个会做点什么吗?同样的问题。
  • 这能回答你的问题吗? Why does my recursive function return None?

标签: python algorithm data-structures tree


【解决方案1】:

每个 Python 函数都会返回一些东西。如果函数没有返回就退出,则返回值为 None。如果第一个 if 语句为真,您的代码将返回 -1。如果 elif 为真,则返回 root.data。否则它返回 None,因为 else 分支被采用并且什么都不返回。它调用 minValue 但实际上并没有做任何事情,因为你没有在那里返回任何东西。函数完成后,代码就结束了——因此 Python 返回 None。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-01
      • 2011-02-06
      • 1970-01-01
      相关资源
      最近更新 更多