二叉树的另一个子树;
代码块
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 ;发生了冲突了导致在不该退层时发生了推层吗?