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

2021/4/11 18:56:13

本文主要是介绍二叉树——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:

Tips:

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



这篇关于二叉树——124. 二叉树中的最大路径和的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程