题目
路径 被定义为一条从树中任意节点出发,沿父节点-子节点连接,达到任意节点的序列。该路径 至少包含一个 节点,且不一定经过根节点。
路径和 是路径中各节点值的总和。
给你一个二叉树的根节点 root ,返回其 最大路径和 。
提示:
树中节点数目范围是 [1, 3 * 104]
-1000 <= Node.val <= 1000
题解
1.1后序遍历
看到后序遍历,就想到了分解问题进行递归
1.2复杂度
时间O(n)
空间 O(n)
1.3代码
class Solution {
private: int ans;
public: int maxPathSum(TreeNode* root) {
ans = -100;
rear(root);
return ans;
}
public :int rear(TreeNode* root) {//后序遍历树
if (!root)
return 0;
int l=max(0,rear(root->left));
int r=max(0,rear(root->right));
ans=max(ans,l+r+root->val); //从底加到头
return
root->val+max(l, r) ;
}
};