A question about the best way to do this data tree

Hey guys, I am making a game and I am curiouse about the best way to go about this issue that I am having.
I will explain, I need a user to dynamically add to a trait tree. Sort of like civillizations tech tree, each addition to the moduels will affect the one placed on. quick example.

Each module when attached will affect the one below it. Would a binary tree work best here? What would you suggest doing?

I am using a 3D menu system for this, I just need to know the best way to do this. Thank you!

Since this has gotten over a thousand views this is how I ended up doing it.

I had a static variable to hold the diffrent types of data. When applied to the node I would check the raycasted objects property and apply the value to it and then push it into the static variable that would be the main variable that acted as my object. simple get component.

Not to mention how dumb this 3D approach is because I have to serialize it. as well as its value, and pos.