import java.util.*;
public class Solution {
public boolean isContains (TreeNode root1, TreeNode root2) {
// 预处理
if (root1 == null && root2 == null) return true;
if (root1 == null || root2 == null) return false;
// 在t1树中寻找值等于root2.val的结点
TreeNode sameNode = getSameNode(root1, root2.val);
// 判断两树是否相等
return isSameTree(sameNode, root2);
}
// 判断两树是否相同
public static boolean isSameTree (TreeNode root1, TreeNode root2) {
// 预处理
if (root1 == null && root2 == null) return true;
if (root1 == null || root2 == null) return false;
// 判断根节点是否相同
if (root1.val != root2.val) {
return false;
} else {
// 递归比较其左右子树
return isSameTree(root1.left,root2.left) && isSameTree(root1.right,root2.right);
}
}
public static TreeNode getSameNode(TreeNode root, int val) {
// 预处理
if (root == null) return null;
// 检查根结点
if (root.val == val) {
return root;
} else {
// 遍历查找其左右子树
TreeNode leftNode = getSameNode(root.left, val);
TreeNode rightNode = getSameNode(root.right, val);
// 判断查找结果
if (leftNode != null) return leftNode;
if (rightNode != null) return rightNode;
}
// 查找失败
return null;
}
}