题目如下
数据范围
示例
显然直径等于左右子树高之和的最大值。
通过代码
/*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {
public:int ans = 0;int geth(TreeNode* root){if(root == nullptr){return 0;}int l = geth(root -> left);int r = geth(root -> right);ans = max(ans,l + r);return max(l,r) + 1;}int diameterOfBinaryTree(TreeNode* root) {geth(root);return ans;}
};