Accediendo a todos los nodos en TreeView Control

tengo unTreeView Control con conjunto de nodos y nodos hijos. Por ejemplo:

ROOT tiene A, B, C.

A tiene a1, a2, a3 y luego a1, a2 también contiene algunos nodos como x1, x2, x3 y así sucesivamente. Al igual que muchos subnodos están ahí. Sé que es posible usar bucles con un bucle for.

Solo quiero acceder a todos los nodos enTreeView Controle usando uno o dos para loops.

¿Hay algún algoritmo para eso o hay alguna otra manera?

Una pregunta más: ¿es posible tener la ruta de un nodo de árbol en un objeto o en una cadena usando cualquier función de biblioteca? Por ejemplo:

string S = TreeView1.Nodes[i].Nodes[j].Nodes