If any member of elements is itself a Tree, then it will be treated as a subtree (or subtrees, in the case of a forest) to be merged into the returned tree structure; for every root in such a subtree, the structure below the root will be unaltered, though the entire subtree itself may be parented to some other member of elements.
>>> lst = ['aab', 'aba', 'aa', 'ba', 'bbb', 'a', 'b', 'bb', 'ab', 'bab', 'bba']
>>> def isChild(s1, s2) :
... return s1.startswith(s2)
>>> a = treeFromIsChild (isChild, *lst)
>>> a.sort()
>>> print a.formatted()
+: a
|-+: aa
| \--: aab
\-+: ab
\--: aba
<BLANKLINE>
+: b
|-+: ba
| \--: bab
\-+: bb
|--: bba
\--: bbb