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