一、什么是DFS
DFS(Depth First Search),深度优先算法;这里笼统的概念就不去介绍了,其实dfs更像是我们对数据结构中学习的二叉树进行的中序遍历。
对于以上一颗二叉树,如果用dfs的方式进行遍历的话,那应该是从根节点1开始,第二步如果选择走到2,下一步就是4,再下一步就是7,它 是一个不走到头不会回头的算法,走到了7之后,再回溯到4,4也没有其他子节点,再回溯到2,也没有其他子节点,再回溯到1,之后以相同的方式遍历右子树;
同样的,既然二叉树的遍历一般用的都是递归函数,那我们这里dfs同样采用递归的方式
二、全排列
首先,对于这个问题,我们会用到dfs,会用到递归,既然会用到递归那就要想到递归出口;如果一个递归函数没有出口,那程序崩溃是必然的。
如果选定一个合理的出口?
这个问题是一个排列问题,排列是指对一定量(比如n个)元素进行任意组合,那我们不妨用搜索深度 == n来当出口;
而且既然已经搜索了n次,说明存储答案的数组也已经满了,在退出之前可以对