树的子结构

2020-07-29  本文已影响0人  Crazy_Bear
/*
struct TreeNode {
    int val;
    struct TreeNode *left;
    struct TreeNode *right;
    TreeNode(int x) :
            val(x), left(NULL), right(NULL) {
    }
};*/
class Solution {
public:
    bool HasSubtree(TreeNode* pRoot1, TreeNode* pRoot2)
    {
        if(pRoot1 == nullptr || pRoot2 == nullptr){
            return false;
        }
        return (judge(pRoot1,pRoot2)||HasSubtree(pRoot1->left,pRoot2)||HasSubtree(pRoot1->right,pRoot2));
    }
    bool judge(TreeNode* pRoot1, TreeNode* pRoot2){
        if(!pRoot1 && pRoot2) return false;
        if(!pRoot1 || !pRoot2) return true;
        return (pRoot1->val == pRoot2->val) && judge(pRoot1->left, pRoot2->left) && judge(pRoot1->right, pRoot2->right);
    }
};
上一篇 下一篇

猜你喜欢

热点阅读