Java 递归求二叉树的最小值

Java 递归求二叉树的最小值,java,algorithm,recursion,Java,Algorithm,Recursion,我试图递归地在二叉树(不是二叉搜索树)中找到最小值。让我困惑的是基本情况。如果TreeNode t为null,将返回什么?因为我将使用返回值与当前最小值(我认为)进行比较,所以我认为返回的内容很重要 public static Object min(TreeNode t) { if(t == null) return ; else instantiate an object named mini compare it to min(t.getLeft(

我试图递归地在二叉树(不是二叉搜索树)中找到最小值。让我困惑的是基本情况。如果TreeNode t为null,将返回什么?因为我将使用返回值与当前最小值(我认为)进行比较,所以我认为返回的内容很重要

public static Object min(TreeNode t)
{  

  if(t == null)
     return ;
  else
     instantiate an object named mini
     compare it to min(t.getLeft())
        if mini is greater than it, mini equals t.getLeft()
     compare mini to t.getRight())
        if mini is greater, mini equals t.getRight
     return mini

}

您当前有
Object
作为
min
的返回类型,但您可能需要更具体的返回类型。例如,如果树包含整数,则返回类型将是
Integer
Long
。只要该类型的
min
返回的值存在合理的最大值,就应该在基本情况下返回该值。例如,如果树包含整数,则返回
Integer.MAX\u VALUE
。为什么?因为你保证其他的东西都会少于这个,所以基本情况不会对结果产生负面影响。

< P>如果这是C或C++,你可以使用指针。Java没有它。但是,您可以模拟类似的情况。
也可以定义包含数据和布尔值的对象

class A { 
    int a; // or whatever you want
    bool is_null = false; // default value
} A_NULL = {0, true};
如果找到数据,则将数据放入对象并返回。
如果您不只是返回一个空值。

我对java中的TreeNode一无所知,但是如果一个对象为空值,我只会返回-1,或者可能是0。如上所述,+infinity是正确的。但我不确定你问的问题是否正确,因为正确的方法可能是不递归到空节点。也许您可以显示其余的代码?(这也比返回类型为Object有点奇怪)。这不起作用,因为0可能大于当前的最小值。MAX_值?@Andrew字符串的最大值是多少?这有什么意义?