题目
BFS
public int maxDepth(Node root) {
if (root == null) {
return 0;
}
// BFS遍历
Queue<Node> queue = new LinkedList();
queue.offer(root);
int step = 0;
// 扩散节点
while (!queue.isEmpty()) {
// 每次扩散将队列中的所有元素全部弹出
int sz = queue.size();
for(int i = 0; i < sz; i ++) {
// 弹出元素
Node temp = queue.poll();
// 将扩散进来的元素添加到队列
if (temp.children != null) {
for (Node childNode : temp.children) {
queue.offer(childNode);
}
}
}
// 步数增加 此时虽然队列中还有元素, 但是前一步的所有元素已经通过sz全部poll出去了
step ++;
}
return step;
}
基本思路
-
注意BFS代码的写, 每次扩散如何消耗完上一轮的所有元素
-
如何记录扩散的步数