Are you calling TreeLayout.DoLayout with only the Nodes and Links that you want to be laid out again? Use TreeLayout.Arrangement set to TreeArrangement.FixedRoots so that the root nodes are not moved, and their children are arranged in subtrees from where those root nodes are.