1.题目描述
求二叉树最远的两个节点的长度
2.题解代码
结合二叉树最大深度那一题一起看,可以知道这一题就是多了一句代码,具体见代码,脑子里一定要有basecase的情况,自己动手画一画
cpp
class Solution {
int ans;
public:
int diameterOfBinaryTree(TreeNode* root) {
ans = 0;//维护一个整个递归过程中都实时记录最大值的ans
dfs(root);
return ans;
}
int dfs(TreeNode* root){
if(root==NULL){
return 0;
}
int left = dfs(root->left);
int right = dfs(root->right);
//如果没有以下一句则就表示求二叉树的最大深度,细品,知识多了个参数记录最大的路径罢了
ans = max(left+right,ans);
return max(left,right)+1;
}
};