Yes, you can have nodes have both “children” and “parents”. However that is no longer a tree structured graph, so you will not be able to use a TreeModel – you must use a GraphLinksModel. Whether or not you can use TreeLayout depends on the circumstances.
If there is just one node that has “descendants” and “ancestors”, you could do what the Double Tree sample does: Double Tree. That basically uses two TreeLayouts going in opposite directions.
If there are any number of nodes that have multiple “parents” but no further “grandparent”, and none of those have their own “children”, one could still use a TreeLayout by customizing the layout to pretend that the extra “parents” are part of the main “parent” node which is a lot bigger to make room for the other “parents”.
But more generally, you may need to use LayeredDigraphLayout. However that is vastly slower than TreeLayout, so the size of the graph that you can handle will be limited by your patience. Alas, JavaScript is several-to-many times slower than .NET or Java.
Examples of LayeredDigraphLayout include Beat Paths, Data Flow Diagram, Sankey Diagram, Page Flow, and Swim Lanes (vertical). You can play with the layout’s properties at Layered Digraph Layout.