题目:原题链接(中等)

标签:树、深度优先搜索

解法 时间复杂度 空间复杂度 执行用时
Ans 1 (Python) O ( N ) O(N) O(N) O ( H ) O(H) O(H) 64ms (40.63%)
Ans 2 (Python)
Ans 3 (Python)

解法一:

class Solution:
    def __init__(self):
        self.ans = 0

    def diameter(self, root: 'Node') -> int:
        self.dfs(root)
        return self.ans

    def dfs(self, node):
        if not node:
            return 0

        max1 = max2 = 0
        for child in node.children:
            val = self.dfs(child)
            if val > max1:
                max1, max2 = val, max1
            elif val > max2:
                max1, max2 = max1, val

        self.ans = max(self.ans, max1 + max2)

        return max1 + 1