# -*- pseudo-mode -*- traverse_queue = [ root ]; work_queue = []; while ( work_queue is_not empty ) { node = shift( traverse_queue ); push( work_queue, node ) if BFS; push/unshift( traverse_queue, children ); push( work_queue, node ) if DFS; }