A distributed algorithm is presented that constructs the minimum weight spanning tree in a connected undirected graph with distinct edge weights. A processor exists at each node of the graph, knowing initially only the weights of the adjacent edges. The processors obey the same algorithm and exchange messages with neighbors until the tree is constructed. The total number of messages required for a graph of N nodes and E edges is at most 5N log of N to the base 2 + 2E and a message contains at most one edge weight plus log of 8N to the base 2 bits. The algorithm can be initiated spontaneously at any node or at any subset of nodes.