We give improved solutions for the problem of generating the k smallest spanning trees in a graph and in the plane. Our algorithm for general graphs takes time O(m log (m, n) + k2); for planar graphs this bound can be improved to O(n + k2). We also show that the k best spanning trees for a set of points in the plane can be computed in time O(min(k2n + n log n, k2 + kn log(n/k))). The k best orthogonal spanning trees in the plane can be found in time O(n log n + kn log log(n/k) + k2).