124. 二叉樹中的最大路徑和

saulstavo發表於2024-12-10

問題描述

二叉樹中的 路徑 被定義為一條節點序列,序列中每對相鄰節點之間都存在一條邊。同一個節點在一條路徑序列中 至多出現一次 。該路徑 至少包含一個 節點,且不一定經過根節點。

路徑和 是路徑中各節點值的總和。

給你一個二叉樹的根節點 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;
    }
};

相關文章