public boolean isSameTree(TreeNode p, TreeNode q) {
if(p==null&&q==null) return true;
if(p==null||q==null) return false;
return isSameTree(p.left, q.left)&&isSameTree(p.right, q.right)&&(p.val==q.val);
}
更新: はあなたのすべてをありがとう、私はあなたが私に言ったものを他のソリューションを知っているが、私の質問ですなぜ私のソリューションは動作しません。それは私がいくつかの戻り値を無視するためですか?ありがとうございました!私は2つのバイナリツリーが同じであるかどうかを判断するためのコードを書かれている
は、私は木を検索する再帰的な方法を使用しますが、このコードは時々動作しませんでした、あなたはそれを把握するために私を助けてください可能性?
ありがとうございます! ここでは、コードです:
/*Definition for a binary tree node.
public class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) { val = x; }
*/
public boolean isSameTree(TreeNode p, TreeNode q) {
if(p!=null){
if(q!=null&&p.val==q.val){
isSameTree(p.left, q.left);
isSameTree(p.right, q.right);
}
else return false;
}else{
if(q!=null) return false;
}
return true;
}
入力: [10,5,15] [10,5、NULL、NULL、15] 出力: 真 が予想される: 偽
それはデバッグを開始する時間です、あなたの現在の出力は、ご希望の出力と一致していない、とあなたがなぜわからない場合。これについてどうやって行くのかわからない場合は、[小さなプログラムをデバッグする方法]を見てください。(http://ericlippert.com/2014/03/05/how-to-debug-small-プログラム/)。あなたの直接の問題を解決することはできませんが、あなた自身が解決するのに役立つ手順を教えてくれます。それでも問題が解決しない場合でも、質問をすることができます。より集中的で簡単に答えることができます。 –
isSameTree()には戻り値があります。それを無視しないでください。 –
@duffymo ==のために==を使うのは安全です –