public boolean HasSubtree(TreeNode root1,TreeNode root2) {

        if (root1 == null || root2 == null){
            return false;
        }

        return preTrace(root1,root2) || HasSubtree(root1.left,root2) ||  HasSubtree(root1.right,root2);
    }

    private boolean preTrace(TreeNode root1,TreeNode root2){

        if (root2 == null){
            return true;
        }

        if (root1 == null){
            return false;
        }

        if (root1.val != root2.val){
            return false;
        }

        if (root2.left == null && root2.right == null){
            return true;
        }

        return preTrace(root1.left,root2.left) && preTrace(root1.right,root2.right);
    }