System Sort Z-order action is very efficient (performance wise), but to use it with multiple sprites you need to combine them into a family.
You can do the same without a family, but this may work a bit slower on large layouts:
.
Also, are you using Spriter to animate the player? Then you probably already have an invisible sprite like "PlayerBox" (which your Player Spriter object is pinned to). So you can put that PlayerBox sprite into the family together with trees, z-sort them and then use "Z Order Move Player to object PlayerBox" on every tick.