if your tree is hardcoded, then that's not too difficult, you can maintain lists of skills using ArrayMaker.
As the user do something, the actual action will fire an event to your talent manager, and it's going to be his responsabilty to check that action and progress in the tree if valid.
don't over think this, it's actually very simple.
what I would do is for each talent node have a fsm, on a prefab that is instantiate when the skill is pending ( the next skill), then it simply watch or listen for the user action and trigger itself as "enabled" in the talent tree, and the next skill is instanciated.
do you see what I mean? so you can build your tree either with a simple set of list, OR each skill knows what is the next possible skills and instantiate them, which is actually a very good solution too.