One custom loop with condition to check child posts

The appropriately named get_children() should be what you want.

if ( have_posts() ) {
  while ( $loop->have_posts() ) {
    $loop->the_post();
    $args = array(
      'post_parent' => get_the_ID(), // the ID from your loop
      'post_type'   => 'page', 
      'posts_per_page' => 1, // you only need to know if you have children so one is enough
      'post_status' => 'publish' 
    );
    $c = get_children($args);

    if (!empty($c)) {
      //  html structure, 
    } else {
      // another default structure
    }
  }
}

If you have more than a few posts in this loop you are going to be running a lot of queries on the page. You should consider caching the results.