2016-10-09 2 views
0

問題があるんツリー、値に等しい和(ブーリアン出力)

我々は、ルートノードから始まるツリー内のノードの任意の配列であることを「ルート・ツー・リーフパス」を定義することと下方に葉に進む。そのパスの「ルートからリーフへのパスの合計」は、そのパスに沿ったすべてのノード(ルートを含む)の合計です。ルートからリーフへのパスを含まないように空のツリーを定義します(したがって、その合計はゼロです)。 1つのノードを持つツリーを定義し、ルートからリーフまでのルートを構成します(したがって、その合計はルートの値です)。バイナリツリーと値 "sum"が与えられた場合、ルートに沿ったすべての値の合計が "sum"に等しくなるようなルートからリーフへのパスがツリーにある場合はtrueを返します。そのようなパスが見つからない場合はfalseを返します。

と私が持っている:

public boolean BTpathsum(BinNode root, int sum) 
{ 
     if(root==null) 
{ 
    return false; 
} 
else if(root.value() == sum){ 
return true; 
} 
else{ 
    return BTpathsum(root.left, sum - root.value()) || BTpathsum(root.right, sum - root.value()); 
} 
} 

は、なぜこれが私のために、誤って回転していますか?

答えて

0

ここでは、あなたは木が空ではなかったことを確認するチェックしませんでした

public boolean BTpathsum(BinNode root, int sum) 
{ 
    if(root!=null) 
    { 
     if(root.value() == sum) 
      return true; 
     else 
      return BTpathsum(root.left, sum - root.value()) || BTpathsum(root.right, sum - root.value()); 
    } 
    else if(sum == 0) 
     return true; 
    else 
     return false; 
} 

を行きます。高さが0で合計が0の場合、trueを返す必要があります。

関連する問題