深度优先搜索(DFS)与先根遍历
事实上,对所有合法的DFS求解过程,都可以将其画为树的形式,DFS的过程就是对这颗树进行先根遍历的过程。
于是我们可以从中得到启发:碰到一些可以用DFS做的题目,可以把一些状态作为树的结点,然后问题就会转换为直观的对树进行先根遍历的问题。如果想要得到树的某些信息,也可以借助DFS以深度作为第一关键词的思想来对结点进行遍历,以获得所需要的结果。例如求解叶子节点的带权路径之和(即从根节点到叶子结点的路径上的结点点权之和)时就可以把到达死胡同作为一条路径结束的判断。
另外,在DFS中,还会有剪枝的概念,即在进行DFS的过程中,对某条可以确定不存在解的子树采取直接剪断的策略。这就是把DFS从树的角度理解才产生的概念。但是剪枝使用的前提是必须保证剪枝的正确性,否则就可能因为剪掉了有解的子树而最终获得了错误的答案。
广度优先搜索(BFS)与层次遍历
对所有合法的BFS求解过程,都可以将问题转化为一棵树,然后将BFS转化为树的层次遍历的过程。