解法一
递归遍历
class Solution {
public:
bool isSubStructure(TreeNode* A, TreeNode* B) {
bool res=false;
if(A!=NULL && B!=NULL){
if(A->val == B->val) res=help(A,B);//以其为起点判断是否为子树结构
if(!res) res=isSubStructure(A->left,B);//从左子树开始查找
if(!res) res=isSubStructure(A->right,B);//从右子树查找
}
return res;
}
bool help(TreeNode* A, TreeNode* B){
if(B==NULL) return true;
if(A==NULL) return false;//A已经遍历完了,B还没有结束,肯定是错的
if(A->val!=B->val) return false;//值不同也是不对的
return help(A->left,B->left) && help(A->right,B->right);
}
};