import java.util.*;
/*
* public class TreeNode {
* int val = 0;
* TreeNode left = null;
* TreeNode right = null;
* public TreeNode(int val) {
* this.val = val;
* }
* }
*/
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param root1 TreeNode类
* @param root2 TreeNode类
* @return bool布尔型
*/
public boolean isContains (TreeNode root1, TreeNode root2) {
// write code here
//如果2是空的,返回true
if(root2==null) return true;
//如果1是空的,且2非空,返回false
if(root1==null&&root2!=null) return false;
//1和2都非空,递归判断
if(isSameTree(root1,root2)) return true;
return isContains(root1.left,root2)||isContains(root1.right,root2);
}
//递归函数判断两棵树是否相同
public boolean isSameTree(TreeNode p1, TreeNode p2){
//用DFS来遍历
//两棵树都为空,相等
if(p1==null&&p2==null) return true;
//两棵树仅有一颗为空,不等
if(p1==null||p2==null) return false;
//两棵树都不为空,但值不同,不等
if(p1.val!=p2.val) return false;
return isSameTree(p1.left,p2.left)&&isSameTree(p1.right,p2.right);
}
}