Leetcode 1665 Solution

This article provides solution to leetcode question 1665 (diameter-of-n-ary-tree)

https://leetcode.com/problems/diameter-of-n-ary-tree

Solution

"""
# Definition for a Node.
class Node:
    def __init__(self, val=None, children=None):
        self.val = val
        self.children = children if children is not None else []
"""

class Solution:
    def diameter(self, root: 'Node') -> int:
        """
        :type root: 'Node'
        :rtype: int
        """
        ans = 0
        def find(node):
            nonlocal ans

            if not node:
                return 0

            child_depths = [0, 0]
            for child_node in node.children:
                child_depths.append(find(child_node))

            child_depths.sort(key=lambda x: -x)

            ans = max(ans, child_depths[0] + child_depths[1])

            return max(child_depths) + 1

        find(root)

        return ans