When the user intentionally leaves the route, navit will always give the instruction to make a 180-degree-turn and return to the route, even when it would be less time-consuming in real life to go on and take a slightly different route than the one originally computed by navit.
(to turn around, you first have to find a suitable place to do it, stop, let opposite traffic pass, etc.)
For example: you drive down(up in the ascii example) a main road (A) and navit wants you to turn right at the junction of A and B to get to the target.
But you decide - no matter why (maybe because of traffic jam on A) - to turn right at the junction of A and C, go down C, turn, follow D and turn right at the junction of D and B.
+----B-----+------>target
| |
| D
+----C-----+
|
A
|
^
start
When on C, navit will urge you to turn around and follow A again.
I am no expert in routing algorithms, but I think if there was some value added to the total "expense" of a route when it involves doing a u-turn on a "one-lane-two-directions-road", better results could be archieved in most of these cases.
Of course the direction of movement has to be known.