求二叉树任意两节点之间距离的最大值
自己写的,这时间复杂度不得上天了,结果竟然击败了81%
/**
* Definition of TreeNode:
* class TreeNode {
* public:
* int val;
* TreeNode *left, *right;
* TreeNode(int val) {
* this->val = val;
* this->left = this->right = NULL;
* }
* }
*/
class Solution {
public:
/**
* @param root: a root of binary tree
* @return: return a integer
*/
int diameterOfBinaryTree(TreeNode * root) {
// write your code here
if(root == nullptr)
return 0;
int a = helper(root->left) + helper(root->right);
int b = max(diameterOfBinaryTree(root->left), diameterOfBinaryTree(root->right));
return max(a,b);
}
int helper(TreeNode *root) {
if(root == nullptr)
return 0;
return max(helper(root->left) + 1, helper(root->right) + 1);
}
};