In this paper, we present a new approximation algorithm called OPSAM (Optimal Path Selection Algorithm for Multicast) for the static multicast routing problem and the newly defined mobile multicast routing problem. Given a graph with the cost and the delay associated to each edge, a source node, a destination node set, and a delay time limit, the first problem requires finding a multicast tree such that the total cost is not only minimized, but also the delay along any path from the source to a destination does not exceed its limit. OPSAM first extracts plural path candidates for each destination to satisfy the delay constraint simultaneously. Then, it iteratively selects better paths among candidates for finding a low-cost tree within a short computation time. The performance of OPSAM is verified through simulations in Waxman model and Tiers model, where OPSAM is better than the best existing algorithm BSMA, especially for Tiers model instances. The second problem requires finding a sequence of multicast trees to follow changes of mobile user locations, such that the sum of total tree costs and the difference between two consecutive trees is minimized. The simulation results show the performance of OPSAM is better than BSMA.