---
# System prepended metadata

title: Leetcode 543. Diameter of Binary Tree
tags: [Leetcode]

---

# Leetcode 543. Diameter of Binary Tree
###### tags: `Leetcode`

題目
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.

解法

```
/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */

int max = 0;

int maxD(struct TreeNode* root)
{
    //若當前節點是NULL就代表沒東西，長度就是0
    if(root == NULL)
        return 0;
    
    //接下來就代表root有東西
    int left = maxD(root->left);
    int right = maxD(root->right);
    //判斷當前節點的左右兩邊長度相加跟當下的max誰比較大
    if(max < left + right)
        max = left+right;
    //回傳此節點之最長的長度，左邊或是右邊，然後要再講的長度(+1)
    if(left>right)
        return left+1;
    else
        return right+1;
}

int diameterOfBinaryTree(struct TreeNode* root){
    //這邊要初始max=0
    max=0;
    maxD(root);
    return max;
}
```