输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构)
B是A的子结构, 即 A中有出现和B相同的结构和节点值。
此题需要注意:这里的相同结构不是具有相同的子树的意思,这一点需要注意!
bool compare2(TreeNode *A, TreeNode *B) {
if( nullptr == B)
return true;
if(nullptr == A)
return false;
bool c = A->val == B->val;
bool l = compare2(A->left, B->left);
bool r = compare2(A->right, B->right);
return c && l && r;
}
bool compare1(TreeNode *A, TreeNode *B) {
if(nullptr == A)
return false;
bool c = compare2(A, B);
bool l = compare1(A->left, B);
bool r = compare1(A->right, B);
return c || l || r;
}
bool isSubStructure(TreeNode* A, TreeNode* B) {
if(nullptr == A || nullptr == B)
return false;
return compare1(A, B);
}