Create a tree recursivly
Is this a bug ?  

The correspondending tree you showed is not consistent.  It should look like  

|--p_
    |--p_a
    |--p_a_
          |--p_a_test  &lt;- this
    |--p_LIG
    |--p_p
    |--p_p_
        |--p_p_c
        |--p_p_c2
        |--p_p_ccc
        |--p_p_test
    |--p_tres
TestLineGraph1
TestLineGraph


Style  


You should always be consistent with the coding style you use. So if you omit (&lt;-bad) braces {} for loops with a single statement, you should stick to it.  
You shouldn't shorten variable / parameter names because that removes readability. -> lvl  


Comments  

Comments should describe why something is done. What is done should be described by the code itself by using meaningful names for classes, methods, parameters.  

A comment which describes what is done like  


 // Create the new node
new GraphUINode(children, this, currentPrefix, lvl + 1);  



should be removed.

Refactoring  

Can't be done until the possibility of the bug as mentioned is cleared.  

As the root problem to solve is to create a tree structure based on a List&lt;string&gt; I would extract this tree creation outside of the constructor to a separate method which only takes a List&lt;string&gt; as input parameter and is returning something like  

class TreeNode
{
    public String Name { get; private set; }
    public IList&lt;TreeNode&gt; ChildNodes { get; private set; }
    public TreeNode()
    {
        ChildNodes = new List&lt;TreeNode&gt;();
    }
    public void FillChildNodes(IList&lt;String&gt; childNodes)
    {

    }
}