Don’t use nested loops, but go for an recursive solution like:
void ListNodes( TreeNode node )
{
foreach( var subnode in node.Nodes )
{
ListNodes( subnode );
}
// Print out node
}
Call this function for your root node.
For your additional question: check the FullPath
property.