converting a Tree to newick format. java

Posted by Esmond on Stack Overflow See other posts from Stack Overflow or by Esmond
Published on 2010-04-10T07:09:05Z Indexed on 2010/04/10 7:13 UTC
Read the original article Hit count: 342

Filed under:

I'm having problems converting a binary rooted tree to newick format. The full explanation for such a format can be found: http://code.google.com/p/mrsrf/wiki/NewickTree

An example of a newick format would be as follows:

for a tree T such as http://www.cs.mcgill.ca/~cs251/OldCourses/1997/topic8/images/completetreetwo.gif the newick representation would be: (((8,9),(10,11)),((12,13),(14,15)))

the internal node will become the commas while the leaves will be retained.

such trees have internal nodes which will always have 2 children.

I have a problem using recursion to come out with this newick format. The output contains far too many nodes and braces.

Any comments to resolve this problem is appreciated or even an iterative algorithm would be welcomed

import java.util.Stack;

public class Tree {

....

public String inOrderNewick(Node root, String output) throws ItemNotFoundException {
    if (root.hasChild()) {
        output += "(";
        output += inOrderNewick(root.child1, output);
        output += ",";
        output += inOrderNewick(root.child2, output);
        output += ")";
        return output;
    } else {
        output += root.getSeq();
        return output;
    }

}

}

© Stack Overflow or respective owner

Related posts about java