参考这个写的https://blog.csdn.net/weixin_42289193/article/details/81741756
概念:
个人理解的。。。
图的遍历,就是不重复的遍历完图中的所有点。
深搜,即朝着一个方向一直遍历,一直遍历到尽头,此时换一个新的点重新开始。重复上述过程直到没有点未被遍历到。
跟树的先序遍历类似,这里还是用二叉树的图来玩儿一下,利用栈实现。
可以看一下二叉树的先序遍历的非递归实现
描述一下先序的时候的步骤。这里的出栈就是输出。
根进栈,出栈,看根有无右子树,若有,右子树进栈,看左子树有无,有,左子树进栈,看栈是否有元素,若有,出栈,相当于新的根,重复上述过程。
遍历与先序简直一模一样,结果也一样,这是把树看作图,代码也是一样的,我就不粘了。
广搜:即一圈一圈的向外搜索,就像树的层次遍历
二叉树的层次遍历 利用队列实现:
根进队列,出队列,然后左子树进队列,右子树进队列
出队列,然后,左子树进队列,右子树进队列
出队列,循环了。
public static void BFS(Node n){
Queue<Node> queue=new LinkedList<Node>();
queue.offer(n);
while(!queue.isEmpty()){
Node now=queue.poll();
System.out.print(now.value);
if(now.lchild!=null){
queue.offer(now.lchild);
}
if(now.rchild!=null){
queue.offer(now.rchild);
}
}
}
结果就是ABCDEF