package com.interview.books.svinterview; import com.interview.leetcode.utils.GraphNode; import java.util.LinkedList; import java.util.Queue; /** * Created_By: stefanie * Date: 14-12-8 * Time: 下午5:03 */ public class SV16_NStepNodes { public int getNodes(GraphNode n1, GraphNode n2, int n){ if(n1 == null || n2 == null || n <= 0) return 0; int count = 0; Queue<GraphNode> queue = new LinkedList<GraphNode>(); queue.offer(n2); while(queue.size() > 0 && n > 0){ int currentLayerSize = queue.size(); for(int i = 0; i < currentLayerSize; i++){ GraphNode node = queue.poll(); for(GraphNode neighbor : node.neighbors){ if(n == 1){ //the last layer, no need to populate it's neighbors. if(neighbor == n2) count++; } else { queue.offer(neighbor); } } } n--; } return count; } }