1、深度优先
深度优先(Depth-First Search,DFS):先从一条线走到叶子节点,然后回到上一个分支处,从另一条分支走,不断重复直到最后我们找到目标节点或者遍历完整棵树。
我们采取的数据结构为栈
1、先将跟节点压入栈
2、判断栈顶元素是否为目标,不是就压入子节点(先右后左)
3、判断栈顶元素是否为目标,不是就弹出栈顶元素,压入他的子节点
4、不断重复步骤3、直到找到目标节点,或者将栈置空遍历完树
2、广度优先
广度优先搜索(Breadth-First Search,BFS):广度优先和深度优先相似,但是我们这次采取的方法是先遍历行。
采用的数据结构为队列
1、先将根节点入队列
2、判断队列首元素是否为目标,不是就将首元素出列,将子节点入列
3、不断重复步骤2、直到找到目标节点,或者遍历完树
参考: