二叉树——124. 二叉树中的最大路径和

二叉树——124. 二叉树中的最大路径和

题目:

二叉树——124. 二叉树中的最大路径和

思路:

思路就是递归,既然是最大,那肯定是左边的最大加上右边的最大再加上root->val才是最大。剩下的具体思路都在代码注释中。

代码:

class Solution {
    // 存放最大路径和
    int ans;
public:
    int dfs(TreeNode* root) {
         // 若为空直接返回0
         if(root == nullptr) return 0;
         // 递归构造左子树,得到当前结点的左孩子结点的最大子路径和
         int l = max(0, dfs(root->left));
         // 递归构造右子树,得到当前节点的右孩子节点的最大子路径和
         int r = max(0, dfs(root->right));
         // 更新最大路径和
         ans = max(l + r + root->val, ans);
         // 返回从当前节点出发的最大路径和
         return max(l, r) + root->val;
    }
    int maxPathSum(TreeNode* root) {
        ans = INT_MIN;
        dfs(root);
        return ans;
    }
};

Rank:

二叉树——124. 二叉树中的最大路径和

Tips:

比较经典,核心思路就是递归。

上一篇:华东师范大学2021年高等代数考研试卷


下一篇:第124天: Web 开发 Django 模板