二叉树递归最小

时间:2017-02-11 20:44:40

标签: java algorithm recursion

我在二叉树中找到最小值,这不是二叉搜索树。但是,我必须递归地执行此操作。令我困惑的是基础案例。如果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

}

2 个答案:

答案 0 :(得分:1)

您目前Object的返回类型为min,但您可能需要更具体的内容。例如,如果树包含整数,则返回类型为IntegerLong。只要该类型有一些合理的最大值,min就会返回基本情况下应该返回的内容。因此,例如,如果您的树包含整数,则返回Integer.MAX_VALUE。为什么?因为您保证其他所有内容都会少于此,所以基本案例不会对结果产生负面影响。

答案 1 :(得分:0)

如果这是C或C ++,你可以使用指针。 Java没有它。但是,你可以模拟这样的东西 或者,您可以定义包含数据和布尔值的Object。

class A { 
    int a; // or whatever you want
    bool is_null = false; // default value
} A_NULL = {0, true};

如果找到了数据,则将数据放入对象并返回。 如果你不只是返回A_NULL。