Two spanning trees rooted at some vertex r in a graph G are said to be independent if for each vertex v of G, v≠r, the paths from r to v in two trees are vertex-disjoint. A set of spanning trees of G is said to be independent if they are pairwise independent. A set of independent spanning trees is optimal if the average path length of the trees is the minimum. Any k-dimensional hypercube has k independent spanning trees rooted at an arbitrary vertex. In this paper, an O(kn) time algorithm is proposed to construct k optimal independent spanning trees on a k-dimensional hypercube, where n=2(superscript k) is the number of vertices in a hypercube.