Given a binary tree, you need to compute the length of the diameter of the tree. The diameter of a binary tree is the length of the longest path between any two nodes in a tree. This path may or may not pass through the root.
Example:
Given a binary tree
1
/ \
2 3
/ \
4 5
Return 3, which is the length of the path [4,2,1,3] or [5,2,1,3].
Note: The length of path between two nodes is represented by the number of edges between them.
题目链接:https://leetcode-cn.com/problems/diameter-of-binary-tree/
思路
很容易能发现规律,最长的路径肯定是从两个叶子节点之间的路径,但不一定会经过根节点。
因此只要计算深度,再每层递归中记录路径的最大值即可。(相当于计算深度的题➕一点判断)
/**
* 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 {
public:
int res = 0;
int diameterOfBinaryTree(TreeNode* root) {
if(!root) return res;
trace(root);
return res;
}
int trace(TreeNode* root){
if(!root) return 0;
int l = trace(root->left);
int r = trace(root->right);
res = max(res, l+r);
return max(l,r)+1;
}
};

本文深入探讨了LeetCode上543题“二叉树直径”的解决方案,讲解了如何通过计算二叉树中任意两节点间最长路径的长度来找到二叉树的直径,路径可能或可能不通过根节点。通过递归计算深度并记录最大路径的方法,实现了高效的求解。
636

被折叠的 条评论
为什么被折叠?



