An attack tree and a threat tree are the same thing. In a traditional application threat model, you start with the component that you're building, (be that the entire application, a component or function, a data flow, etc.) and enumerate the potential threats to that component.
When you're building an attack tree, the development is reversed. You start with the attacker's end goal, and then enumerate the possible ways you could achieve the end goal, and only then look at the application to find locations where it may be vulnerable to the vectors you've identified.
As Adam Shostack mentioned in his answer, attack trees are generally more suited to more advanced practitioners, and usually as a complement to traditional threat models, not a replacement for them.
Ideologically, attack trees are more a red-team style attacker-centric approach to the problem, which can provide useful additional insight.