I agree that this is how you will have to fix this problem. I have had a couple of situations where I was working backwards and didn't realize that two branches of the family led back to a common ancestor, so ended up with someone in there twice from different routes. The key is to fix the relationship links, and then get rid of the extras.
Also, one thing I learned the hard way is that when deleting someone completely, you need to start at the outer edges (all the tangential folks) and work back to the person you really need to delete, or you will end up with "orphans" who are not connected to anyone in your tree, because you have removed the connector. This happened to me when I decided that things were totally out of hand, and elected to keep only the lineal ancestors for some early generations - when making deletions, I had to first delete the spouses, spouses' parents, etc., or they all would have stayed in the tree, but with no connections.