描述:
示例:
代码:
1.先确定比较的起始位置
2.再比较是否左右子树也相等
class Solution {
public:
bool IsSame(TreeNode* begin, TreeNode* beginSub) {
if (nullptr == beginSub) return true;
if (nullptr == begin) return false;
if (begin->val != beginSub->val)return false;
return IsSame(begin->left, beginSub->left) && IsSame(begin->right, beginSub->right);
}
bool HasSubtree(TreeNode* pRoot1, TreeNode* pRoot2)
{
if (pRoot1 == nullptr || pRoot2 == nullptr) return false;
bool result = false;
if (pRoot1->val == pRoot2->val)result = IsSame(pRoot1, pRoot2);
if (!result) result = HasSubtree(pRoot1->left, pRoot2);
if (!result) result = HasSubtree(pRoot1->right, pRoot2);
return result;
}
};