题目描述
输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)
/*
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 || !pRoot2) return false;
//遍历节点,找到 pRoot1 == pRoot2 的节点
return check(pRoot1, pRoot2) || HasSubtree(pRoot1->left, pRoot2) || HasSubtree(pRoot1->right, pRoot2);
}
bool check(TreeNode* A, TreeNode* B){
if (!B) return true;//A不空B空-B为A的子树 或 A空B空-相同,都返回true
if (A && B){//A B存在验证val值
if((A->val == B->val) )
return check(A->left, B->left) && check(A->right, B->right);
}
return false;
}
};