# LC 104. Maximum Depth of Binary Tree ### [Problem link](https://leetcode.com/problems/maximum-depth-of-binary-tree/) ###### tags: `leedcode` `easy` `python` `c++` `Binary Tree` Given the <code>root</code> of a binary tree, return its maximum depth. A binary tree's **maximum depth** is the number of nodes along the longest path from the root node down to the farthest leaf node. **Example 1:** <img alt="" src="https://assets.leetcode.com/uploads/2020/11/26/tmp-tree.jpg" style="width: 400px; height: 277px;" /> ``` Input: root = [3,9,20,null,null,15,7] Output: 3 ``` **Example 2:** ``` Input: root = [1,null,2] Output: 2 ``` **Constraints:** - The number of nodes in the tree is in the range <code>[0, 10<sup>4</sup>]</code>. - <code>-100 <= Node.val <= 100</code> ## Solution 1 #### Python ```python= class Solution: def maxDepth(self, root: Optional[TreeNode]) -> int: if not root: return 0 return 1 + max(self.maxDepth(root.left), self.maxDepth(root.right)) ``` #### C++ ```cpp= /** * 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 maxDepth(TreeNode* root) { if (root == nullptr) { return 0; } int leftLevel = maxDepth(root->left); int rightLevel = maxDepth(root->right); return max(leftLevel, rightLevel) + 1; } }; ``` >### Complexity >n = The number of nodes in the tree >| | Time Complexity | Space Complexity | >| ----------- | --------------- | ---------------- | >| Solution 1 | O(n) | O(n) | ## Note x