問題描述
二叉樹中的 路徑 被定義為一條節點序列,序列中每對相鄰節點之間都存在一條邊。同一個節點在一條路徑序列中 至多出現一次 。該路徑 至少包含一個 節點,且不一定經過根節點。
路徑和 是路徑中各節點值的總和。
給你一個二叉樹的根節點 root ,返回其 最大路徑和 。
分析
樹形DP,還沒完全弄明白。
遞迴
class Solution {
public:
int res = -1e9;
int solve(TreeNode* root) {
int l_sum = 0, r_sum = 0;
if (root == nullptr) {
return 0;
}
l_sum = solve(root->left);
r_sum = solve(root->right);
res = max(res, l_sum+r_sum+root->val);
return max(max(l_sum, r_sum)+root->val, 0);
}
int maxPathSum(TreeNode* root) {
solve(root);
return res;
}
};