A
/ \
B C
/ \
D E
/ \
F G
深度优先故名思义,就是往深处走。
先确定A为起点(可以选择其他任意为起点)
A->B->(这里也可以选择C)E->F(没有路了,回到E再一次的搜索)->G(又没有路了,回到B搜索)->D(没有路了回到A搜索)->C。
所以其中一个答案就为
ABEFGDC
实现的时候用一个栈,每次遍历当前节点的最近子节点,并把当前节点入栈,当到叶节点时,出栈上一个节点,看其是否还有未遍历的子节点。
广度优先,顾名思义就是广度走。
先确定A为起点,也可以确定其他任意为起点。
A->B->C(同一排的一般先左后右,现在这一排完了,到下一排->D->E(这一排又完了)->F->G
实现的时候用一个队列
先把根节点入队
然后重复
1.从队列中取一个节点,标记为已遍历,并将其左右子节点入队列
2.取队列中的下一个节点,重复1,直至队列为空