2017-02-12 13 views
1

バイナリ検索ツリーではない文字列ツリー内の最小値を再帰的に見つける必要があります。私は私のような他のいくつかの質問を見てみましたが、答えを理解できませんでした。Javaのバイナリツリーの最小値を再帰的に見つける

私は各サブツリーの最小値を見つけて、それをルートと比較し、最小値を返さなければならないことを知りました。しかし、私は実際にそれをどのように書くのかは分かりません。

これはヘッダーです:

public static Object min(TreeNode t){ 

} 

EDIT: だから何私がこれまでに考え出したことは、この

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

ようこそスタックオーバーフロー!私たちはQ&Aサイトであり、雇用者向けサービスではありません。これまでに何を試みたのか、それがうまくいかなかった理由を説明してください。参照:[なぜ誰かが私を助けることができますか?実際の質問ではありませんか?](http://meta.stackoverflow.com/q/284236) –

+0

@JoeC Agreed。しかし、このような状況では投票に投票して閉じるべきです。 – nhouser9

+0

@GabrielOshiro正しいですが、その場合は投票に投票する必要があります。 – nhouser9

答えて

1

getLeftまたはgetRightもnullにする必要があります。そうでなければ、コードが例外を終了します。

次に、 "最小値"が必要な場合は、より大きい比較が入力されるべきではないと私は思わない。

あなたは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

ええ、テストされていません;)その隣にあるチェックマークを使用して回答を受け入れてください。また、あなたは修正を使って自分の答えを編集することもできます –

関連する問題