572. 另一个树的子树
题目链接
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/subtree-of-another-tree/
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
题目描述
题目分析
参考101题
递归法
compare:判断left 和right两个子树是否全相同。要时刻记得这个函数的作用
不要写着写着功能就混了!
class Solution {
public:
bool compare(TreeNode* left, TreeNode* right){//判断left 和right两个子树是否全相同
if(left == nullptr && right == nullptr){
return true;
}else if(left != nullptr && right != nullptr){
if(left->val == right->val){
bool out = compare(left->left, right->left);
bool in = compare(left->right, right->right);
return out && in;
}else{
return false;
}
}else{
return false;
}
return true;
}
bool isSubtree(TreeNode* root, TreeNode* subRoot) {
if(root == nullptr && subRoot == nullptr){
return true;
}else if(root != nullptr && subRoot != nullptr){
return compare(root, subRoot) || isSubtree(root->left, subRoot) || isSubtree(root->right, subRoot);//前面是compare函数 后两个是isSubtree函数
}else{
return false;
}
}
};