Preorder traversal complete

I always think the traversals are going to be cake, but they somehow
never are - I always forget one key implementation detail and then it
bites me.