2017-02-11 193 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。