java面试总结之算法

图:

图相关的问题主要集中在深度优先搜索(depth first search)和广度优先搜索(breath first search)。深度优先搜索很简单,广度优先要注意使用queue. 下面是一个简单的用队列Queue实现广度优先搜索。

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. public class GraphTest {  
  2.     public static void breathFirstSearch(GraphNode root, int x){  
  3.         if(root.val == x)  
  4.             System.out.println("find in root");  
  5.    
  6.         Queue queue = new Queue();  
  7.         root.visited = true;  
  8.         queue.enqueue(root);  
  9.    
  10.         while(queue.first != null){  
  11.             GraphNode c = (GraphNode) queue.dequeue();  
  12.             for(GraphNode n: c.neighbors){  
  13.    
  14.                 if(!n.visited){  
  15.                     System.out.print(n + " ");  
  16.                     n.visited = true;  
  17.                     if(n.val == x)  
  18.                         System.out.println("Find "+n);  
  19.                     queue.enqueue(n);  
  20.                 }  
  21.             }  
  22.         }  
  23.     }  
  24. }  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值