For comparators, there are many ways to create them:

1, Implement comparable

2, Implement comparator

3, Just create a Comparator:

private static Comparator<Interval> IntervalComparator = new Comparator<Interval>() {
    public int compare(Interval i1, Interval i2) {
        return i1.start - i2.start;
    }
};

4, Binary Tree class and BFS function

public static void traverseTree(BinTreeNode root) {
    System.out.println("Tree:");
    if (root == null) {
        return;
    }

    Queue<BinTreeNode> queue = new LinkedList<>();
    queue.add(root);
    while(!queue.isEmpty()) {
        int size = queue.size();
        for (int i = 0; i < size; ++i) {
            BinTreeNode node = queue.poll();
            System.out.print(Integer.toString(node.value) + ' ');
            if (node.left != null) {
                queue.offer(node.left);
            }
            if (node.right != null) {
                queue.offer(node.right);
            }
        }
        System.out.println();
    }
}

public static class BinTreeNode {
    int value;
    BinTreeNode left;
    BinTreeNode right;

    public BinTreeNode(int val) {
        value = val;
        left = null;
        right = null;
    }
}