2017-02-12 63 views
1

我需要在不是二叉搜索樹的字符串樹中遞歸查找最小值。我試着看看像我這樣的其他問題,但我無法弄清楚答案。以遞歸方式在Java中的二叉樹中找到最小值

我已經想通了,我一定要找到每個子樹的分鐘,然後將其比作根,並返回最小值。但我不確定如何真正寫這個。

這是標題:

public static Object min(TreeNode t){ 

} 

編輯: 所以我到目前爲止已經想通了,這是

public static Object min(TreeNode t){ 
    if(t == null){ 
     return ______; 
    } 
    else if(min(t.getLeft().compareTo(min(t.getRight()) < 0){ 
     if(min(t.getLeft()).compareTo(t) < 0){ 
      return min(t.getLeft()); 
     } 
    } 
    else if(min(t.getLeft().compareTo(min(t.getRight()) > 0){ 
     if(min(t.getRight()).compareTo(t) < 0){ 
      return min(t.geRight()); 
     } 
    } 
    else{ 
     return t; 
    } 
} 

我覺得我在正確的方向前進,但我我不確定什麼符合null基本情況下的return語句。有人可以幫助我理解退貨聲明中的內容,爲什麼?如果我這樣做對嗎?謝謝

+3

歡迎堆棧溢出!我們是一個問答網站,而不是一個打碼人員的服務。請解釋你到目前爲止嘗試過的以及爲什麼它沒有奏效。請參閱:[爲什麼「有人可以幫助我?」不是一個實際的問題?](http://meta.stackoverflow.com/q/284236) –

+0

@JoeC同意。但是,您應該投票結束這種情況。 – nhouser9

+0

@GabrielOshiro正確,但在這種情況下,您應該投票結束。 – nhouser9

回答

1

您需要處理getLeftgetRight也是空的,否則您的代碼會導致異常。

然後,如果你想要「最低」,你不應該輸入任何大於比較的情況,我不這麼認爲。

誰說你不能返回null?

public static Object min(TreeNode t){ 
    TreeNode min = t; 
    if(t == null){ 
     return min; 
    } 
    final TreeNode left = t.getLeft(); 
    final TreeNode right = t.getRight(); 

    if (left == null && right == null) 
     return min; 

    if(left != null && left.compareTo(t) <= 0) { 
     min = (TreeNode) min(left); 
    if(min != null && right != null && right.compareTo(t) > 0){ // not sure about this 
     min = (TreeNode) min(right); 
    } 
    return min; 
} 
+0

謝謝!它與一點編輯工作。 –

+0

是的,未經測試;)請使用旁邊的複選標記自由接受答案。另外,歡迎您使用修復程序編輯我的答案 –