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 { private boolean HasSubtree2(TreeNode root1, TreeNode root2) { if (root2==null) return true ; if (root2!=null && root1==null) return false ; if (root1.val == root2.val) if (HasSubtree2(root1.left, root2.left)) if (HasSubtree2(root1.right, root2.right)) return true ; return false ; } public boolean HasSubtree(TreeNode root1, TreeNode root2) { if (root1 == null || root2 == null) return false ; if (root1.val == root2.val) if (HasSubtree2(root1, root2)) return true ; if (root1.left != null) if (HasSubtree(root1.left, root2)) return true ; if (root1.right != null) if (HasSubtree(root1.right,root2)) return true ; return false ; } }