问题描述
输入两颗二叉树A,B,判断B是不是A的子结构。
题目来源:牛客网
/*
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
TreeNode(int x) :
val(x), left(NULL), right(NULL) {
}
};*/
class Solution {
public:
bool HasSubtree(TreeNode* pRoot1, TreeNode* pRoot2) {
if (pRoot1 == NULL || pRoot2 == NULL)
return false;
if (pRoot1 == pRoot2)
return true;
return (isSubtree(pRoot1, pRoot2) || (HasSubtree(pRoot1->left, pRoot2) || HasSubtree(pRoot1->right, pRoot2));
}
bool isSubtree(TreeNode* r1, TreeNode* r2) {
if (r2 == NULL)
return true;
if (r1 == NULL)
return false;
return r1->val == r2->val && isSubtree(r1->left, r2->left) && isSubtree(r1->right, r2->right);
}
};