一、认识的理清
1、 应该认识到“深度优先”和“广度优先”是算法思想,而递归是实现“深度优先”的一种方法(深度优先可以非递归实现);
2、 深度优先搜索也叫深度优先遍历(DFS,Depth_Fisrt_Search);
3、 遍历的目的是把节点按照一定的规则排成线性序列(存储的时候线性存储,但画图表现时并非如此),访问节点时按照此顺序访问。
4、 遍历是一个过程,这过程中带有相应的操作,比如判断、求解问题啥的。
二、图的遍历
概念:从图的某一点出发访问其余顶点,且使得每一个顶点仅仅被访问一次,这过程叫图的遍历。
1、深度优先遍历:不到黄河不死心,死心后返回;关键在于所有点都被访问一遍,可能有回退(一般都有)。
2、广度优先遍历:之前我以为同层之间的相邻节点必须有边,但是这理解是错误的,实际上像树的层次遍历,只要求把其所有子节点入队,不要求相邻子节点之间有边。
三、树的遍历
1、前序、中序、后序遍历,其实都采用的是DFS思想,DFS思想常用递归实现;
2、层次遍历,采用的是BFS思想,采用队列这种数据结构实现。