1def diameter_of_binary_tree(root):
2 diameter = 0
3
4 def max_depth(node):
5 nonlocal diameter
6 if not node:
7 return 0
8
9 left = max_depth(node.left)
10 right = max_depth(node.right)
11 diameter = max(diameter, left + right)
12 return 1 + max(left, right)
13
14 max_depth(root)
15 return diameter