给出一个二叉树,要求求出从树中任意一个节点到另一节点的最长路径的长度(长度是经过节点个数-1)。可能不经过跟节点
1/ \2 3/ \ 4 5 Return 3, which is the length of the path [4,2,1,3] or [5,2,1,3]本来想用动态规划的方法自底而上进行求解,但这样比较浪费空间。在参考discus后,可以将maxlength提取出来,每次与之前的最大值相比较。
class Solution {
public:int maxdiadepth = 0;int dfs(TreeNode* root) {if (root == NULL) return 0;int leftdepth = dfs(root->left);int rightdepth = dfs(root->right);if (leftdepth + rightdepth > maxdiadepth) maxdiadepth = leftdepth + rightdepth;return max(leftdepth + 1, rightdepth + 1);}int diameterOfBinaryTree(TreeNode* root) {dfs(root);return maxdiadepth;}
};