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.