Difference between vector and scalar legalization

Is there a reason VectorLegalizer::Run() and SelectionDAGLegalize::LegalizeDAG() visit the DAG nodes in a different order? The former traverses the DAG from top to bottom (users legalized after all their uses are legalized) and the latter traverses the DAG in the opposite order.

I am finding it hard to write code for vector node legalization in some cases and wondering whether there is an option to reverse the order.