I think you need a recursive function.
public void output(Tree tree) {
System.out.println(tree.nodeString());
for(int i = 0; i < tree.numChildren(); i++) {
output(tree.children()[i]);
}
}
And you can extract the tag of a token by judge whether the child node is leaf, for exam:
if(tree.numChildren() == 1 && tree.children()[0].isLeaf()) {
System.out.println(tree.nodeString()+" "+tree.children()[0].nodeString());
}