问题
样例
关键:利用递归
代码
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
bool hasSubtree(struct TreeNode* pRoot1, struct TreeNode* pRoot2) {
bool isSame(struct TreeNode*,struct TreeNode*);
if(!pRoot1 || !pRoot2) return false;
if(isSame(pRoot1,pRoot2)) return true;
return hasSubtree(pRoot1->left,pRoot2) || hasSubtree(pRoot1->right,pRoot2);
}
bool isSame(struct TreeNode* pRoot1,struct TreeNode* pRoot2){
if(!pRoot2) return true;
if(!pRoot1 || pRoot1->val != pRoot2->val) return false;
return isSame(pRoot1->left,pRoot2->left) && isSame(pRoot1->right,pRoot2->right);
}