I will give you a minimalist answer to your specific questions.
"For example, if a variable must be set to #exData, a post-assignment is required because #exData for a node is initially empty and will be filled after visiting all the child nodes."
#exData is defined for each node separately and it is initially empty for that node. I am not sure about the position of "for a node". Did I use it correctly?
The position is fine. It could be clearer to write "for a particular node".
Also I don't know if before because I need comma or not.
Optional. A good way to decide is to read the sentence out loud, and see whether you think pausing at that spot makes it easier or harder for the listener to follow what you're saying. If you desire a pause, use a comma. If you feel a pause there breaks up the flow too much, omit the comma.
Sorry, one other comment: it might be helpful to insert only as follows: "... and will only be filled after visiting all the child nodes."