Organizing And Managing Faces.

I have partitione my scene using kind of BSP-tree. I has a lot of faces. I have a list of vertices and list of faces. Each face has a pointer to three vertices.
I render visible faces using glBegin(GL_TRIUANGLES) … glEnd(). But that way many of the vertices are transformed many times. One vertex can be divided by multiple face, but I render them separately.
How can I make so (using OGL) that I transform only used vertices, and render faces using transformed vertices.
How to solve this problem to get best result?
I don’t think I can use vertexarrays, since I have so much vertices.

If I understand it right can you use triangle strips instead of triangles. If speed is a concern should you use vertex arrays particulary if you have many vertices. It may be a good idea to go back and find a better structure.

A better structure could be something that lets you do frustum culling easy.