我们看深度优先搜索或者深度优先遍历的话,它的整个遍历顺序毫无疑问根节点 1 永远最先开始的,接下来往那个分支走其实都一样的,我们简单起见就是从最左边开始走,那么它深度优先的话就会走到底。
参考多叉树模版我们可以在脑子里面或者画一个图把它递归起来的话,把递归的状态树画出来,就是这么一个结构。
- 就比如说它开始刚进来的话,传的是 root 的话,root 就会先放到 visited 里面,表示 root 已经被 visit,被 visited之后就从 root.childern里面找 next_node,所有它的next_node都没有被访问过的,所以它就会先访问最左边的这个结点,这里注意当它最左边这个结点先拿出来了,判断没有在 visited里面,因为除了 root之外其他结点都没有被 visited过,那么没有的话它就直接调dfs,next_node 就是把最左边结点放进去,再把 visited也一起放进去。
- 递归调用的一个特殊,它不会等这个循环跑完,它就直接推进到下一层了,也就是当前梦境的话这里写了一层循环,但是在第一层循环的时候,我就要开始下钻到新的一层梦境里面去了。