计算二叉树的直径

1. LeetCode 543. Diameter of Binary Tree

2. 描述

给定一个二叉树,需要计算该树的直径长度。 二叉树的直径是指树中任意两个节点之间的最长路径,该路径不一定要经过root节点。

3. 示例

以下二叉树返回值为3, 最长的路径为[4,2,1,3]和[5,2,1,3]

    1
   / \
  2   3
 / \ 
4   5 

4. 解决方案:

int MaxDepth(TreeNode* root, int& diameter){
    if(root == nullptr){
        return 0;
    }
    int left_height = MaxDepth(root->left,diameter);
    int right_height = MaxDepth(root->right,diameter);
    diameter = max(diameter, left_height + right_height);
    return max(left_height,right_height) + 1;
}
int diameterOfBinaryTree(TreeNode* root) {
    int diameter = 0;
    MaxDepth(root, diameter);
    return diameter;
}
Table of Contents