# 104. Maximum Depth of Binary Tree

--

Given the `root` 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:

`Input: root = [3,9,20,null,null,15,7]Output: 3`

Example 2:

`Input: root = [1,null,2]Output: 2`

Example 3:

`Input: root = []Output: 0`

Example 4:

`Input: root = [0]Output: 1`
`/** * 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 == NULL){            return 0;        }        if(root->left == NULL && root->right == NULL){            return 1;        }        return max(maxDepth(root->left)+1, maxDepth(root->right)+1);    }};`

recursive終止條件

1. 遇到root == NULL : 當樹是空樹時，return 0
2. root是leaf node : return 1

Runtime: 8 ms, faster than 64.75% of C++ online submissions for Maximum Depth of Binary Tree.

Memory Usage: 18.8 MB, less than 51.18% of C++ online submissions for Maximum Depth of Binary Tree.