Lowest Common Ancestor
I would simplify the findOrQueue function to make sure it stays DRY

public void findOrQueue(Node target, Node top, LLQueue q) {
    int cmp = target.getData().compareTo(top.getData()); 
    q.enqueue(top);
    if(cmp != 0) {
        Node nextTop = (cmp &lt; 0) ? top.getLeftChild() : top.getRightChild();
        findOrQueue(target, nextTop, q);
    }
}


Since it's used recursively, it might not be a horrible idea to keep the exit condition explicit for readability:

if(cmp == 0) {
    return; // Exit condition
} else {
    // ... as above
}


Edit: The return condition can also be made more direct:

boolean bothEmpty = q1.isEmpty() &amp;&amp; q2.isEmpty();
return (!bothEmpty) ? t : null;