•  I immediately blew up on a recursive loop count error, basically because your code can put the table references in an infinite loop.  Here's an extract of the output after I modified your code.

       |---Contact

            |---Contact

            |---MortgageInsurance

                |---ContactOffice

                    |---LoanFeeTemplate

                        |---Contact (Loop Reference)

    First I put in a temp table to track what tables have already had tree output.  Oh, yuck, now there's all these add row messages in the middle of your print.  OK add a second table to hold the output.  Hmmm, now there's maintenance of these temp tables and no way for your recursive loop to know when the table is done.  Make two procs, one to handle the tables and one to recursively loop through the list.  Hmmm, your self-refference is on the same level, may as well fix that as well.  I'll put my finished code (that also takes care of the error message your newbie had.) in a new post.