讨论/题目交流/c 二叉树的相似的子树求解/
c 二叉树的相似的子树求解

二叉树的另一个子树;

代码块
bool compare (struct TreeNode* p1,struct TreeNode* p2)
{
          
          if(!p1 && !p2)  return true;  //全为空;
          
          else if(p1&&p2)   //全不为空;
           {
                if(p1->val==p2->val)
                    return true; //当前的位置相等;
           }     
            else  return false;     

                 return compare(p1->left ,p2->left) && compare(p1->right,p2->right);

}
bool isSubtree(struct TreeNode* s, struct TreeNode* t){
     if(!s) return false;   //当为空时; 
     return compare(s,t)+isSubtree(s->left,t)+isSubtree(s->right,t);  // 有一个为真就为真 ,对每一个进行比较;
}

|572| 另一颗树的子树|简单|
在使用 [3,4,5,1,2,null,null,0]
[4,1,2]
用例时返回的true ,发生错误;
我的思路是 ,双重递归 ,以每一个结点为根节点递归比较每一个结点是否相似,如果相似返回true , 不相似返回false;
请问上面的代码哪里错了,该如何改正 ,它是递归退层 和 p1!=NULL p2!=NULL p1->va!=p2->val return false ;发生了冲突了导致在不该退层时发生了推层吗?

老哥,你这个只要一个节点相等就返回true,而且最后是相加的,只要一个为true全都为true,这好像有点问题吧

1