当root1和root2都为空的时候返回true,当其中之一不为空时返回false,当两者都不为空时判断两棵树是否相同、或者roo1中的左子树是否包含、或者root1中的右子树是否包含root2。
/**
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
class Solution {
public:
/**
*
* @param root1 TreeNode类
* @param root2 TreeNode类
* @return bool布尔型
*/
bool is_same(TreeNode* root1,TreeNode* root2){
if(root1==nullptr && root2==nullptr) return true;
if(root1==nullptr || root2==nullptr) return false;
if(root1->val != root2->val) return false;
return is_same(root1->left,root2->left) && is_same(root1->right,root2->right);
}
bool isContains(TreeNode* root1, TreeNode* root2) {
if(root1==nullptr && root2==nullptr) return true;
if(root1==nullptr || root2==nullptr) return false;
return is_same(root1,root2) || isContains(root1->left,root2) || isContains(root1->right,root2);
}
};