题解:
思路一:
递归,非常容易想的思路,父节点的深度,等于其子节点中最大深度再加一。 代码如下:
1
2
3
4
5
6
7
8
9
10
|
public int maxDepth(Node root) {
if (root == null) return 0;
int max = 1;
for (int i = 0; i < root.children.size(); i++) {
max = Math.max(max,maxDepth(root.children.get(i)) + 1);
}
return max;
}
|
思路二:
迭代,利用树的层序遍历,遍历完一层时,高度+1, 直到遍历完整棵树。代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
// 迭代 层序遍历
public int maxDepth(Node root) {
if (root == null) return 0;
Queue<Node> queue = new LinkedList<>();
queue.add(root);
Node node = root;
int height = 0;
while (!queue.isEmpty()){
int size = queue.size();
while (size > 0){
node = queue.remove();
for (int i = 0; i < node.children.size(); i++) {
queue.add(node.children.get(i));
}
size --;
}
height ++;
}
return height;
}
|