JavaScript Solution to Maximum Depth of N-ary Tree

Gulgina Arkin
JavaScript in Plain English
2 min readOct 9, 2020

--

Prerequisite: Tree Traversal In JavaScript

For our last ‘She’s coding’ data structure and algorithm practice event, we chose to solve maximum depth of N-ary tree problem(link). We had interesting discussion about approaches to solve it. In the following blog, I’ll share the common solution to this problem.

Photo by Belinda Fewings on Unsplash

Problem:

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:

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

Example 2:

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 depth of the n-ary tree is less than or equal to 1000.
- The total number of nodes is between [0, 10^4].

Solution:

N-ary Tree is a common data structure to encounter, unlike binary tree, which has left and right children, n-ary tree’s node in this problem has value and children attributes.

https://gist.github.com/GAierken/6f9b0d8049a41829f5601af3b883dc23

The input is the root tree, and output is the integer that represents the depth of the given tree. First thing to consider is if the given root is null or not. After validating the root, to count the level, we traverse the tree. Because we need to count the level, we also need a variable to store the levels, so when the traversing is done, we can return the depth of the tree. The key of the solution is traversing. When it comes to traversing a tree, the common approaches are depth-first-search and breath-first-search. Let’s see how we solve it both ways.

Depth-first-search

https://gist.github.com/GAierken/475d54f1a7d76567883935ffb722f2fc

Breadth-first-search

https://gist.github.com/GAierken/afa6e80ae45374a5f29ef74de0073a1d

I hope this could offer you some insights about solving the similar questions in the future.

--

--