Python 2, 103 97 bytes
f=lambda n,r=[1],k=2:n and f(n-1,[sum(r[-2::-1][:i],r[-1])for i in range(k)],k+1)or r[::-(-1)**k]
Non-recursive version (easier to read):
Python 2, 106 bytes
def f(n,r=[1],j=1):
while n:
a=r[-2::-1];r=r[-1:];n-=1;j=-j
for x in a+[0]:r+=[r[-1]+x]
return r[::-j]
Surely, better is possible!