解决的主要问题是:
1.我的朋友或者朋友的朋友里有没有亿万富翁。
2.我如何才能最快的认识到这位大佬。
如图所示:
我的朋友有张三,李四,王五。
张三的朋友赵六,田七(亿万富翁)。
红色圈内表示一度关系,黄色圈和红色圈之间表示二度关系。

逐步向外延伸,先检查一度关系再检查二度关系是广度优先算法的基本逻辑。
再来用一张图表示之间的逻辑关系:

代码实现:
检查时应该先检查我的朋友,再检查我朋友的朋友,代码如何实现那,Queue(队列)是个不错的选择,下面用Java写一段示例代码:
1.先定义朋友之间的关系

2.搜索逻辑实现

public class MiniTest {
public static void main(String[] args) {
//定义一个存放关系的对象
Map<String, List> friendRelationshipBetween = new HashMap<>();
//我的朋友
List myFriend = new ArrayList();
myFriend.add("zhangsan");
myFriend.add("lisi");
myFriend.add("wangwu");
friendRelationshipBetween.put("myFriend",myFriend);
//张三的朋友
List zhangSanFriend = new ArrayList();
zhangSanFriend.add("zhaoliu");
zhangSanFriend.add("tianqi");
friendRelationshipBetween.put("zhangsan",zhangSanFriend);
//创建一个队列
Queue<String> queue = new LinkedList();
//把我的朋友加入队列
myFriend.forEach(item ->{
queue.offer(item+"");
});
//搜索实现
boolean isWhile = true;
while (isWhile){
//poll()表示取出朋友并从队列里删除
String name = queue.poll();
//如果还有朋友进入逻辑
if(name!=null){
//如果找到了田七
if("tianqi".equals(name)){
System.out.println("找到了亿万富翁田七!!!");
return;
//如果这个人还有朋友就将他的朋友放入队列中
}else if(friendRelationshipBetween.get(name) != null){
friendRelationshipBetween.get(name).forEach(item ->{
queue.offer(item+"");
});
}
//没有朋友则返回没有搜索到
}else{
System.out.println("你的朋友里面没有人是亿万富翁!!!");
isWhile = false;
}
}
}
}