add preorder traversal