題目:
題解:
- 坑點:A、B爲空樹,這兩棵樹都不相等。。。
- 剩下的用兩層dfs解決,第一層dfs用來判斷B是否是A的左子樹或右子樹,第二層dfs來判斷B是否是A的子結構。
- 類似題:572. 另一個樹的子樹
代碼如下:
class Solution {
public:
bool isSubStructure(TreeNode* A, TreeNode* B) {
if(!A||!B)return false;//A、B有一個爲空,表示匹配失敗;或者A、B都爲空,這兩顆樹也不相等
if(isSame(A,B))return true;
return isSubStructure(A->left,B)||isSubStructure(A->right,B);
}
bool isSame(TreeNode* A,TreeNode* B){
if(!B)return true;//B爲空,A是否空,都完成匹配了
if(!A)return false;//B爲不空,A爲空,匹配失敗
if(A->val!=B->val)return false;
return isSame(A->left,B->left)&&isSame(A->right,B->right);
}
};