#+ANKI_DECK: study_deck_02 * TODO 0543. Diameter of Binary Tree :easy: :PROPERTIES: :NEETCODE: [[file:../../roadmap.org::*0543. Diameter of Binary Tree][0543. Diameter of Binary Tree]] :END: Given the ~root~ of a binary tree, return /the length of the *diameter* of the tree/. The *diameter* of a binary tree is the *length* of the longest path between any two nodes in a tree. This path may or may not pass through the ~root~. The *length* of a path between two nodes is represented by the number of edges between them. *Example 1:* #+begin_src Input: root = [1,2,3,4,5] Output: 3 Explanation: 3 is the length of the path [4,2,1,3] or [5,2,1,3]. #+end_src *Example 2:* #+begin_src Input: root = [1,2] Output: 1 #+end_src *Constraints:* - The number of nodes in the tree is in the range ~[1, 10^{4}]~. - ~-100 <= Node.val <= 100~ ** TODO Approach Write your approach here. ** TODO Python #+begin_src python :lc-problem 543 :lc-lang python3 # 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 diameterOfBinaryTree(self, root: Optional[TreeNode]) -> int: #+end_src ** TODO C++ #+begin_src cpp :lc-problem 543 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} * }; */ class Solution { public: int diameterOfBinaryTree(TreeNode* root) { } }; #+end_src