牛客網 - 劍指offer - “樹的子結構”
阿新 • • 發佈:2018-12-21
題目描述
輸入兩棵二叉樹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); } };