add level-by-level bfs