LeetCode刷题笔记 116. 填充每个节点的下一个右侧节点指针

116. 填充每个节点的下一个右侧节点指针

题目要求

给定一个非空二叉树,返回其最大路径和。

本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。

示例 1:

输入: [1,2,3]

       1
      / \
     2   3

输出: 6
示例 2:

输入: [-10,9,20,null,null,15,7]

   -10
   / \
  9  20
    /  \
   15   7

输出: 42

题解

解析

https://github.com/soulmachine/leetcode

class Solution {
public:
    int maxPathSum(TreeNode* root) {
        max_sum=INT_MIN;
        dfs(root);
        return max_sum;
    }
private:
    int max_sum;
    int dfs(const TreeNode *root){
        if(!root) return 0;
        int l=dfs(root->left);
        int r=dfs(root->right);
        int sum=root->val;
        if(l>0) sum+=l;
        if(r>0) sum+=r;
        max_sum=max(max_sum,sum);
        return max(r,l)>0?max(r,l)+root->val:root->val;
    }
};
发布了17 篇原创文章 · 获赞 0 · 访问量 2175

猜你喜欢

转载自blog.csdn.net/g534441921/article/details/104286079
今日推荐