Finding braches of n-ary graph tree
===

Given a n-ary tree, http://en.wikipedia.org/wiki/Tree_%28graph_theory%29, described by a graph with vertices and edges, I would like to split the tree into sub graphs.  Each sub graph would be a branch of the n-ary tree.  The sub graph would contain adjacent edges with vertices of a degree of one.  The start and end conditions would be vertices with a degree greater than one.  If the branch is terminating the end condition would be a vertex with a degree of one.

What algorithm might accomplish this?  Also would there be a graph library that would support this?  A c# implementation would be ideal.