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; } }