我的方法应该计算集合nodes
中节点的深度,但是对于某些树,会调用NullPointerException
,这是因为queue.poll()
返回null。在方法描述中,据说queue.poll()
仅当队列为空时返回null。在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;
}
答案 0 :(得分:3)
如果将override func willMove(toParentViewController parent: UIViewController?) {
var textAttributes: [NSAttributedString.Key : Any]?
if parent == nil{ // navigating back
textAttributes = [NSAttributedStringKey.foregroundColor:UIColor.black]
}else{
textAttributes = [NSAttributedStringKey.foregroundColor:UIColor.white]
}
navigationController?.navigationBar.titleTextAttributes = textAttributes
}
添加到LinkedList,它将被保留。例如
null