Additionally, as the hierarchy is stored inside the same table, you can fetch the table in 1 collection and build the complete tree from that single collection using a hashtable which keeps track of entity - node pairs.
This is a O(n) algorithm where you traverse the collection once and at the end you have your tree. I'm not sure if that's feasable in your situation though, the tree might be very big and you therefore might want to use load on demand for nodes.