The preparation of many-body quantum states plays an important role in quantum information. On the one hand, some of those states are required to exploit the field of quantum sensing, quantum communication, or play a crucial role in quantum information theory. On the other, they enable the investigate quantum many-body systems, extracting properties that otherwise are difficult to compute. Furthermore, some of them can be useful to initialize quantum algorithms that prepare ground states or thermal states. In this I will present several protocols to efficiently prepare tensor network states with quantum circuits. The first protocol is based on a technique called sequential generation, and allows one to prepare arbitrary matrix product states (MPS) and a large subclass of projected entangled-pair states (PEPS) with circuit depths scaling linearly with the system size, N. The second is based on the adiabatic quantum algorithm, and can create certain subclass of MPS and PEPS with a circuit depth that scales (poly)-logarithmically with N. The third set is inspired by renormalization procedures and, for generic MPS, it is optimal in terms of the circuit depth, which scales as log(N). Then, I will show that with the help of local operations and classical communication (LOCC) one can speed up the process, obtaining circuit depths scaling as log(log(N)). Finally, by lifting the requirement of exact preparation, one can devise other protocols that create so-called W-states and Dicke states with a number of resources that do not depend on the system size, something that is not possible in the previous scenarios. As a biproduct of the last two protocols, I will present efficient schemes to implement certain non-local, both Clifford and non-Clifford unitary operators using LOCC deterministically.