1. 程式人生 > >牛客網 - 劍指offer - “樹的子結構”

牛客網 - 劍指offer - “樹的子結構”

題目描述

輸入兩棵二叉樹A,B,判斷B是不是A的子結構。(ps:我們約定空樹不是任意一個樹的子結構)

/*
struct TreeNode {
    int val;
    struct TreeNode *left;
    struct TreeNode *right;
    TreeNode(int x) : val(x), left(NULL), right(NULL) {
    }
};*/

class Solution {
public:
    bool isSubTree(TreeNode* p1, TreeNode* p2)
    {
        if(!p2) return true;    // p2已經遍歷到底了還是對的,這部分就是對的
        if(p1 && p2 && p1->val == p2->val)
            return isSubTree(p1->left, p2->left) && isSubTree(p1->right, p2->right);
        else
            return false;
    }
    
    bool HasSubtree(TreeNode* p1, TreeNode* p2)
    {
        if(!p1 || !p2) return false;
        return isSubTree(p1, p2) || HasSubtree(p1->left, p2) || HasSubtree(p1->right, p2);
    }
};