题目链接:543. 二叉树的直径 - 力扣(LeetCode)
要找两个节点之间最多的边数,这个最多的边数必定是某个节点的左右子树的深度之和,因此递归计算每个子树的深度,过程中记录最大和即可
class Solution {
public:
int ans = 0;
int diameterOfBinaryTree(TreeNode *root) {
depth(root);
return ans;
}
int depth(TreeNode *root) {
if (!root)
return 0;
int L = depth(root->left);
int R = depth(root->right);
ans = max(ans, L + R);
return max(L, R) + 1;
}
};