2017-02-11 194 views
0

我找到了二叉树中的最小值,它不是二叉搜索树。但是,我必须递归执行此操作。令我困惑的是基础案例。如果t为空,我会返回那里?由于我将使用返回值与当前最小值(我认为)进行比较,因此重要的是我返回。提前致谢!找到最小递归的二叉树

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 

} 
+0

我对java中的TreeNode一无所知,但是如果一个对象为空,我只会返回-1或可能为0. – Ryan

+0

如前所述,+ infinity是正确的。但我不确定这是你问的正确的问题,因为可能正确的方法是不缓存到空节点。也许你可以显示你的其他代码? (它比返回类型是Object还有点奇怪)。 –

+0

这将无法正常工作,因为0可能会更大,当前最小 – Andrew

回答

1

您目前有Objectmin返回类型,但你可能想更具体的东西。例如,如果树包含整数,则返回类型将为IntegerLong。只要min返回的那种类型有一些合理的最大值,那就是你应该在基本情况下返回的值。因此,例如,如果您的树包含整数,则返回Integer.MAX_VALUE。为什么?因为你保证所有的东西都会少于这个数字,所以基本情况不会对结果产生不利影响。

+0

是否存在String.MAX_VALUE? – Andrew

+0

@Andrew String的最大值是多少?这有什么意义? –

0

如果这是C或C++,你可以使用指针。 Java没有它。但是,你可以模拟这样的事情。
或者你可以定义一个包含数据和布尔值的对象。

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

如果您找到了一个数据,然后将数据放入该对象并返回它。 如果你不只是返回A_NULL。