https://leetcode.com/problems/diameter-of-binary-tree/

int BT(TreeNode* root, int& maxDiameter){
    int leftDepth = 0;
    int rightDepth = 0;
    
    if(root->left){
         leftDepth = BT(root->left, maxDiameter);
    }
    if(root->right){
         rightDepth = BT(root->right, maxDiameter);
    }
    int node_diameter = leftDepth + rightDepth;
    maxDiameter = max(node_diameter, maxDiameter);
    return max(leftDepth, rightDepth) + 1;
}

class Solution {
public:
    int diameterOfBinaryTree(TreeNode* root) {
        int maxDiameter = 0;
        BT(root, maxDiameter);
        
        return maxDiameter;
    }
};

현재 노드에서 maxDiameter 는 왼쪽 depth + 오른쪽 depth

그리고 상위 노드로 보내줘야 할 값은 현재 노드의 왼쪽 or 오른쪽 depth 중 최대값 + 1.