In 1968, Char [4] presented an algorithm to enumerate all the spanning trees of an undirected graph

. This algorithm starts with a known initial spanning tree of

, and generates all the other spanning trees along with certain spanning non-tree subgraphs of

. In this paper a detailed complexity analysis of Char\´s algorithm and methods to speed up the algorithm are discussed. Two heuristics for the selection of the initial spanning tree are suggested. These heuristics result in a considerable reduction in the number of spanning non-tree subgraphs generated. A technique called path compression, aimed at reducing the actual number of comparisons, is described. Computational results on several randomly generated graphs are presented to illustrate the improvement achieved.