I have the following problem: Suppose I have a tree of data as follows (Labels represent the branches of the tree, Nodes represent data "leaves" contained in the branches): Label1 Node1 Node2 Label2 Node3 Label3 Node4 Node5 Label4 Node6 I want to move every "label" or "branch" of the tree that contains only one "node" or "leaf" into the highest level of the tree and delete that branch. I basically want to remove the branches that contain one leaf and move the data from that leaf into the highest level of the tree. So for the example I have, I would like it to become the following: Label1 Node1 Node2 Node3 Node6 Label3 Node4 Node5 What is the best way to code such a problem, and would any one language be suitable for this task? The data I have is in an excel file so I suppose I could do it in there but I'm looking for a more elegant way to do it, preferably in Python/Perl/Java/MATLAB. Thanks!