バイナリツリーのルートからリーフへのパスの合計を計算しようとしています。動作していないようですが、doesItの値はtrueになりますが、再帰的なので、スタックがポップするとfalseに戻ります。それを修正する方法がわからない。 どのようにしてdoItの値がtrueに変わるとスタック全体に伝播するようにコードを変更するのですか? [5,4,8,11、NULL、NULL、NULL、7,2] 順序どおりバイナリツリーのパスの合計を計算する
そう5は、二人の子供4及び8を有する4は1子11を有し、8:
ツリーを検討しますあなただけの子供にメソッドを呼び出すことで、指定した値を投げる子
hasPathSum(ルート、22)
public boolean hasPathSum(TreeNode root, int sum) {
boolean doesIt = false;
if (root != null)
{
doesIt = pathSum(root, sum, 0, doesIt);
}
return doesIt;
}
private static boolean pathSum(TreeNode root, int sum, int sumSoFar, boolean doesIt)
{
if (root.left == null && root.right == null)
{
if (sumSoFar+root.val == sum)
{
doesIt = true;
return doesIt;
}
return doesIt;
}
if (root.left != null)
{
pathSum(root.left, sum, sumSoFar+root.val,doesIt);
}
if (root.right != null)
{
pathSum(root.right, sum, sumSoFar+root.val,doesIt);
}
return doesIt;
}
7と2はどうなりますか?ツリーを描き、答えを更新する。 – Vaibs
'pathSum'がそれ自身を再帰的に呼び出すとき、内側の' pathSum'呼び出しは値を返しますが、あなたはそれを使用しません。これらの戻り値を使用するようにメソッドを修正するだけで済みます。私は方法が何をすべきか理解していないので、どのようにして、私はどのように理解できません。 – ajb