Need wp_query to return all children and grandchildren

Ok, I found a solution. I first looped through and got all the child page ID’s, created an array, and used post_parent__in

<?php $parentarray = array($parentid);
                            $parentposts = new WP_Query( array( 'posts_per_page' => -1, 'post_type' => 'page', 'post_parent' => $parentid ) );
                            while ( $parentposts->have_posts() ): $parentposts->the_post(); ?>
                                <?php $parentarray[] = get_the_id(); ?>
                        <?php endwhile; 
                       wp_reset_postdata(); ?>

<?php $popularpost = new WP_Query( array( 'posts_per_page' => 4, 'post__not_in'=> array(220), 'meta_key' => 'wpb_post_views_count', 'orderby' => 'meta_value_num', 'order' => 'DESC', 'post_type' => 'page', 'post_parent__in' => $parentarray  ) );
while ( $popularpost->have_posts() ) : $popularpost->the_post(); ?>
                   <a href="https://wordpress.stackexchange.com/questions/354403/<?php the_permalink(); ?>" class="cta"><?php the_title(); ?></a>
<?php endwhile;
                       wp_reset_postdata(); ?>