When you are setting node = node.getLeftChild();
(or symetrically node = node.getRightChild();
you are changing the value of the local variable node
, and not the reference to this node from the father.
You are missing something like:node.father.left = ....
(or node.father.right = ...
).
You should change the values in the tree itself, and not only the references you hold in the method.