数据结构与算法(三)图的遍历(深度优先,广度优先)

参考这个写的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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值