make downward pass always be BFS
make upward pass be reverse of the downward