# 【LeetCode】 543. Diameter of Binary Tree
## Description
> Given a binary tree, you need to compute 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.
> Note: The length of path between two nodes is represented by the number of edges between them.
> 給予一個二元樹,你需要計算出樹的直徑。一個樹的直徑是在該樹中任意兩個節點的最遠距離。這條路徑可能不會經過樹根。
> 提示:兩個節點中的路徑長度代表他們之間存在幾條邊。
## Example:
```
Example:
Given a binary tree
1
/ \
2 3
/ \
4 5
Return 3, which is the length of the path [4,2,1,3] or [5,2,1,3].
```
## Solution
* 首先,先做出一個找樹高的function。
* 左樹高 + 右樹高 = 該節點的值;回傳最大的節點值即可。
* 既然是Tree當然使用遞迴做,變成自己、左子樹、右子樹取最大,直到遇到`NULL`才停止(回傳`0`)。
### Code
```C++=1
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
int len(TreeNode* node, int N)
{
if(node == NULL)
return N;
return max(len(node->left, N + 1), len(node->right, N + 1));
}
int diameterOfBinaryTree(TreeNode* root) {
if(root == NULL) return 0;
int l = len(root->left, 0) + len(root->right, 0);
return max(l, max(diameterOfBinaryTree(root->left), diameterOfBinaryTree(root->right)));
}
};
```
###### tags: `LeetCode` `C++`