您的位置:首页 > 编程语言 > C语言/C++

C/C++编程题刷题:leetcode 543. 二叉树的直径

2020-08-24 12:22 225 查看

543. 二叉树的直径

给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过也可能不穿过根结点。

示例 :
给定二叉树

[code]          1
/ \
2   3
/ \
4   5

返回 3, 它的长度是路径 [4,2,1,3] 或者 [5,2,1,3]。

[code]/**
* Definition for a binary tree node.
* struct TreeNode {
*     int val;
*     TreeNode *left;
*     TreeNode *right;
*     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
int ans;
public:
int diameterOfBinaryTree(TreeNode* root) {
ans = 0;
dfs(root);
return ans;
}
int dfs(TreeNode* p){
if(p==nullptr)
return 0;

int L = dfs(p->left);
int R = dfs(p->right);
ans = max(ans,L+R);
return max(L,R)+1;
}
};

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: