Мой метод должен вычислять глубину узлов в наборе nodes
, но для некоторых деревьев вызывается NullPointerException
, что происходит потому, что queue.poll()
возвращает ноль.В описании метода говорится, что queue.poll()
возвращает ноль тогда и только тогда, когда очередь пуста.Это условие проверяется в цикле while, поэтому у меня вопрос, почему эта ошибка может возникнуть и как ее исправить.
private Map<Tree, Integer> determineDepth(Tree root, Set<Tree> nodes) {
Map<Tree, Integer> depthMap = new HashMap<>();
Map<Tree, Boolean> visited = new HashMap<>();
LinkedList<Tree> queue = new LinkedList<Tree>();
depthMap.put(root, 0);
visited.put(root, true);
queue.add(root);
Tree node;
while (queue.size() != 0) {
node = queue.poll();
int depth = depthMap.get(node);
for (Tree child : node.children()) {
depthMap.put(child, depth + 1);
visited.putIfAbsent(child, false);
if (!visited.get(child)) {
visited.put(child, true);
queue.add(child);
}
}
}
return depthMap;
}