  We give a simple algorithm that determines whether a given post-critically
finite topological polynomial is Thurston equivalent to a polynomial. If it is,
the algorithm produces the Hubbard tree; otherwise, the algorithm produces the
canonical obstruction. Our approach is rooted in geometric group theory, using
iteration on a simplicial complex of trees, and building on work of
Nekrashevych. As one application of our methods, we resolve the polynomial case
of Pilgrim's finite global attractor conjecture. We also give a new solution to
Hubbard's twisted rabbit problem, and we state and solve several
generalizations of Hubbard's problem where the number of post-critical points
is arbitrarily large.
