剑指offer26:树的子结构

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

剑指offer26:树的子结构

 

写的好看点:

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

剑指offer26:树的子结构

 

上一篇:异常


下一篇:【每日一题】【DFS】2022年1月5日-543. 二叉树的直径