You could pick a character that's unlikely to occur in your text file, prepend the parent name + that character to each child line, sort then remove the parent name and the separator from each child line e.g. with `gnu` sed and a low ascii char like `\x02`
sed '/^[^[:blank:]]/h;//!G;s/\(.*\)\
\(.*\)/\2\x02\1/' infile | sort | sed 's/.*\x02//'
How it works:
the 1st `sed` does the following:
`/^[^[:blank:]]/h` \- copy non indented lines (parents) over hold space
`//!G` \- on indented lines (children) append hold space content to pattern space
`s/\(.*\)\
\(.*\)/\2\x02\1/` \- swap lines in pattern space replacing the `\
`ewline with `\x02`
after that, `sort` and remove everything up to and including `\x02` with a 2nd `sed 's/.*\x02//'`