其他分享
首页 > 其他分享> > 剑指offer26:树的子结构

剑指offer26:树的子结构

作者:互联网

 

主要考察树的遍历 

直接上代码:

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);
    }
};

 

标签:right,TreeNode,offer26,子结构,ans,return,isSub,isSubStructure
来源: https://blog.csdn.net/weixin_46266058/article/details/122416879