2017-02-11 4 views
0

私は二分木で最小値を見つけました。それは二分探索木ではありません。しかし、私はこれを再帰的に行う必要があります。私を混乱させるのは、基本的なケースです。 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 

} 
+0

私はJavaのTreeNodeについて何も知りませんが、オブジェクトがnullの場合、-1またはおそらくは0を返します。 – Ryan

+0

+無限大が正しいとします。しかし、おそらく正しい方法はヌルノードに再帰することではないので、これがあなたが求めている正しい質問であるかどうかはわかりません。おそらくコードの残りの部分を表示できますか? (戻り値の型がObjectよりも少し奇妙です)。 –

+0

0は現在の最小値 – Andrew

答えて

1

あなたは現在minの戻り値の型としてObjectを持っていますが、おそらく、より具体的な何かをしたいです。たとえば、treeに整数が含まれている場合、戻り値の型はIntegerまたはLongになります。そのタイプのいくつかの合理的な最大値がある限り、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を返しただけではない場合。

関連する問題