We give a simple algorithm to find a spanning tree that simultaneously
approximates a shortest-path tree and a minimum spanning tree. The al
gorithm provides a continuous tradeoff: given the two trees and a gamm
a > 0, the algorithm returns a spanning tree in which the distance bet
ween any vertex and the root of the shortest-path tree is at most 1 root 2 gamma times the shortest-path distance, and yet the total weigh
t of the tree is at most 1 + root 2/gamma times the weight of a minimu
m spanning tree. Our algorithm runs in linear time and obtains the bes
t-possible tradeoff. It can be implemented on a CREW PRAM to run a log
arithmic time using one processor per vertex.