1. 多走几遍. DFS( i ) is to visit the nodes on ith level. i.e. 1 2 3 4 5 6 7 DFS(1) visits 1 DFS(2) visits 2, 3 DFS(3) visits 4, 5, 6, 7 ... Of course, when you visit 4, 5, 6, 7, you visit 1,2,3 as well, but you only interests in 4, 5, 6, 7, which are on 3rd level and output 4, 5, 6, 7 as a result. 2. old data is no longer needed. So overwrite it. i.e. cache?