This paper presents a wireless multicast tree construction algorithm, SWIM (Source-initiated WIreless Multicast). SWIM forms one shared tree from source(s) to the multicast destinations; yet, as a side product it creates a multicast mesh structure by maintaining alternative branches at every tree node, thus providing robustness to link failures. This makes it suitable for both ad-hoc networks and access networks with multiple gateways. It is proved that SWIM is fully distributed, with a worst case complexity (for multicast) upper-bounded by O(N3), and average complexity of only O(N2). SWIM constructs a tree on which each multicast destination has the minimum possible depth (number of hops from the nearest source). In terms of minimizing the number of forwarding nodes (NFN), SWIM is optimal for unicast. Its average NFN in the broadcast and multicast cases is compared with practical algorithms targeting low NFN reported in the literature. In both multicast and unicast, SWIM performs competitively in terms of NFN with the previous solutions, while having smaller maximum depth, and consequently low delay.