## Algorithm

Problem Name: 559. Maximum Depth of N-ary Tree

Given a n-ary tree, find its maximum depth.

The maximum depth is the number of nodes along the longest path from the root node down to the farthest leaf node.

Nary-Tree input serialization is represented in their level order traversal, each group of children is separated by the null value (See examples).

Example 1:

```Input: root = [1,null,3,2,4,null,5,6]
Output: 3
```

Example 2:

```Input: root = [1,null,2,3,4,5,null,null,6,7,null,8,null,9,10,null,null,11,null,12,null,13,null,null,14]
Output: 5
```

Constraints:

• The total number of nodes is in the range `[0, 104]`.
• The depth of the n-ary tree is less than or equal to `1000`.

## Code Examples

### #1 Code Example with Java Programming

```Code - Java Programming```

``````
class Solution {
public int maxDepth(Node root) {
if (root == null) {
return 0;
}

int max = Integer.MIN_VALUE;

for (Node child : root.children) {
max = Math.max(max, maxDepth(child));
}

return 1 + Math.max(max, 0);
}
}
``````
Copy The Code &

Input

cmd
root = [1,null,3,2,4,null,5,6]

Output

cmd
3

### #2 Code Example with Javascript Programming

```Code - Javascript Programming```

``````
const maxDepth = function(root) {
let max = 0
if(root == null) return 0
function dfs(node, depth) {
if(node == null || node.children.length === 0) {
depth++
if(depth > max) max = depth
return
}
depth++
for(let n of node.children) {
dfs(n, depth)
}
}
dfs(root, 0)
return max
};
``````
Copy The Code &

Input

cmd
root = [1,null,3,2,4,null,5,6]

Output

cmd
3

### #3 Code Example with C# Programming

```Code - C# Programming```

``````
using System;
using System.Collections.Generic;

namespace LeetCode
{
public class _0559_MaximumDepthOfNAryTree
{
public int MaxDepth(Node root)
{
if (root == null) return 0;

var max = 0;
foreach (var child in root.children)
max = Math.Max(max, MaxDepth(child));

return max + 1;
}

public class Node
{
public int val;
public IList < Node> children;

public Node() { }

public Node(int _val)
{
val = _val;
children = new List < Node>();
}

public Node(int _val, IList _children)
{
val = _val;
children = _children;
}
}
}
}
``````
Copy The Code &

Input

cmd
root = [1,null,2,3,4,5,null,null,6,7,null,8,null,9,10,null,null,11,null,12,null,13,null,null,14]

Output

cmd
5