
 
主要考察树的遍历
直接上代码:
class Solution {
public:
    bool isSubStructure(TreeNode* A, TreeNode* B) {
        bool ans=false;
        if(A&&B)
        {
            if(A->val==B->val)
            {
                ans=isSub(A,B);
            }
            if(!ans)
            {
                ans=isSubStructure(A->left,B);//注意这里用的是isSubStructure而不是isSub
            }
            if(!ans)
            {
                ans=isSubStructure(A->right,B);
            }
        }
        return ans;
    }
    bool isSub(TreeNode *A,TreeNode *B)
    {
        if(B==NULL) return true;
        if(A==NULL) return false;
        return A->val==B->val && isSub(A->left,B->left) && isSub(A->right,B->right);
    }
};
写的好看点:
class Solution {
public:
    bool isSubStructure(TreeNode* A, TreeNode* B) {
        if(A==NULL||B==NULL) return false;
        return isSub(A,B)||isSubStructure(A->left,B)||isSubStructure(A->right,B);
    }
    bool isSub(TreeNode *A,TreeNode *B)
    {
        if(B==NULL) return true;
        if(A==NULL) return false;
        return A->val==B->val && isSub(A->left,B->left) && isSub(A->right,B->right);
    }
};










