バイナリツリーが与えられたときにルートからリーフにノード値を加算するときに番号に等しい場合は小さなコードを書いていますtrueを返し、そうでない場合はfalseを返します。バイナリツリー内のルートからリーフまでのパスがありますか
boolean pathExists(BinaryTreeNode<Integer> root,int sum,int value) {
if(root==null)
return false;
sum=sum+root.data;
if(sum==value && root.left==null && root.right==null) {
return true;
}
boolean found=pathExists(root.left, sum,value);
if(found)
return true;
boolean check=pathExists(root.right, sum, value);
if(check)
return true;
sum=sum-root.data;
return false;
}
私はすべてのテストケースで動作すると思いますが、いずれのテストケースでも動作しない場合は、教えてください。私の主な疑問は、コードをもっとよく見せるように、私がやったロジックを使ってコードを書いた方がいいですか? 2つの変数を見つけて、if文に入れてtrueを返すのではなく、一般的に再帰的な問題のように1つの行に入れることが可能ですか?明らかthis-
return pathExists(root.left, sum,value) || pathExists(root.right, sum,value);
のようなものは、上記の文は機能しないだろうが、どのようなアプローチはありますか?私はこのような基本的な質問をして申し訳なく思っていますが、私はいつも再帰でかなり苦労していました。
それは、このための右のサイトではありません。実際のコードに問題がなければ、私たちはあなたを助けません。私があなたに助言を与えることができるなら、あなたのメソッドの可能なユースケースごとに単体テストを書いてください。それはあなたの質問に答えるべきです。 – davidxxx
@davidxxxブロは、stackoverflowのは、私が書いたコードへのより良い代替手段を示唆ための右のサイトではありませんか?それは実際の意味ですか...?正しいだ – Revanth
- あなたは、コードを作業にフィードバックを求めることができる場所コードレビューサイトです。 – AJNeufeld