Leetcode 543:二叉树的直径
程序员文章站
2022-03-03 10:34:47
...
题目描述
给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过根结点。
示例 :
给定二叉树
1 / \ 2 3 / \ 4 5
返回 3, 它的长度是路径 [4,2,1,3] 或者 [5,2,1,3]。
注意:两结点之间的路径长度是以它们之间边的数目表示。
解题思路
class Solution {
public:
unordered_map<TreeNode*,int> mp;
int height(TreeNode* root){
if(root == NULL) return 0;
if(mp.find(root)!=mp.end()) return mp[root];
mp[root->left] = height(root->left);
mp[root->right] = height(root->right);
mp[root] = max(mp[root->left],mp[root->right])+1;
return mp[root];
}
void fun(TreeNode* root,int& mnum){
if(root == NULL) return;
int l = mp[root->left];
int r = mp[root->right];
mnum = max(mnum,l+r);
if(l < r) fun(root->right,mnum);
else if(l > r) fun(root->left,mnum);
else return;
}
int diameterOfBinaryTree(TreeNode* root) {
height(root);
int ans = 0;
if(root != NULL) fun(root,ans);
return ans;
}
};
下一篇: 543. 二叉树的直径
推荐阅读
-
leetcode 113 剑指offer 面试题34. 二叉树中和为某一值的路径(python3)
-
LeetCode第958题 二叉树的完全性检验
-
Leetcode刷题记录——958. 二叉树的完全性检验
-
leetcode 第 958 题:二叉树的完全性检验(C++)
-
leetcode 958 二叉树的完全性检验(超简洁写法)
-
leetcode 958. 二叉树的完全性检验(输出是否是完全二叉树 dfs/bfs每次假如队列的时候判断 值是不是sz)
-
Java实现 LeetCode 637 二叉树的层平均值(遍历树)
-
LeetCode637. 二叉树的层平均值(层序遍历)
-
【树】leetcode_637_二叉树的层平均值
-
leetCode 637 二叉树的层平均值(树,层次遍历)