import clear.treebank.TBNode; import clear.treebank.TBReader; import clear.treebank.TBTree; import java.util.ArrayList; public final class TreeDiff { public TreeDiff(String treeFile1, String treeFile2) { isDifferent(treeFile1, treeFile2); } boolean isDifferent(String treeFile1, String treeFile2) { TBReader reader1 = new TBReader(treeFile1); TBReader reader2 = new TBReader(treeFile2); TBTree tree1, tree2; for (int treeId = 0; (tree1 = reader1.nextTree()) != null; treeId++) { tree2 = reader2.nextTree(); if (tree2 == null) { System.err.println("Different # of trees"); return true; } if (isDifferent(tree1, tree2, treeId)) { return true; } } if (reader2.nextTree() != null) { System.err.println("Different # of trees"); return true; } return false; } boolean isDifferent(TBTree tree1, TBTree tree2, int treeId) { ArrayList<TBNode> list1 = tree1.getTerminalNodes(); ArrayList<TBNode> list2 = tree2.getTerminalNodes(); if (list1.size() != list2.size()) { System.err.println("Different # of terminal nodes: " + treeId); return true; } for (int termId = 0; termId < list1.size(); termId++) { if (list1.get(termId).getMaxHeight() != list2.get(termId).getMaxHeight()) { System.out.println("Different terminal nodes: " + treeId + " " + termId); return true; } } return false; } static public void main(String[] args) { TreeDiff treeDiff = new TreeDiff(args[0], args[1]); } }