Seu código trabalharia corretamente se a árvore permaneceria equilibrada após o apagamento. A causa principal de seu problema é explicada abaixo:
Está aqui o subtree esquerdo depois que você remove o nó com o valor 10.
14
/\
3 12
/\ \
1 4 13
Se nós queremos encontrar o nó com valor 12, de acordo com seu código os 12 estão comparados com os 14. Se os 12 <� 14="">para resolver o problema você mantiverem a árvore balançada.