foreach node in the children ARRAY recursively call this routine if the node has children recursively call this routine if the node has NO children the returned list is just that node each time the routine returns it's array is pushed onto the array of the callee when the routine reaches the end of the top children ARRAY the visited nodes haved all been pushed into the top list