Exclude parent with child pages from WP_Query

the_dramatist’s answer will give you only top-level pages that have no children, which matches the example given in your description.

However, if you want to get ALL leaf pages, use the following:

SELECT *
FROM $wpdb->posts
WHERE
    post_type="page" AND ID NOT in
    (
        SELECT ID
        FROM $wpdb->posts
        WHERE
            post_type="page" AND ID in
            (
                SELECT post_parent
                FROM $wpdb->posts
                WHERE post_type="page"
            )
    ) AND post_status="publish"

tech