# Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, right=None): # self.val = val # self.left = left # self.right = right class Solution: def __init__(self): self.ans = 0 def diameterOfBinaryTree(self, root: Optional[TreeNode]) -> int: if not root: return ans self.dfs(root) return self.ans def dfs(self, node: Optional[TreeNode]) -> int: if not node: return 0 l = self.dfs(node.left) r = self.dfs(node.right) self.ans = max(self.ans, l + r) return 1 + max(l, r)