二叉树最大路径和

1、题目描述

https://leetcode-cn.com/problems/binary-tree-maximum-path-sum/submissions/

2、解题思路:

https://leetcode-cn.com/problems/binary-tree-maximum-path-sum/solution/er-cha-shu-zhong-de-zui-da-lu-jing-he-by-ikaruga/

 

3、代码:

复制代码
/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    int max=Integer.MIN_VALUE;
    public int maxPathSum(TreeNode root) {
        dfs(root);
        return max;
    }

    public int dfs(TreeNode root){
        if(root==null){
            return 0;
        }
        // 左右子树的最大路径和是否是正贡献,非正贡献就取0
        int leftMax=Math.max(0,dfs(root.left));
        int rightMax=Math.max(0,dfs(root.right));
        // 判断left->root->right这条路径是不是和最大的
        max=Math.max(max,root.val+leftMax+rightMax);
        // 选一个单边最大的
        return root.val+Math.max(leftMax,rightMax);
    }
    
}
复制代码

。。

posted @   guoyu1  阅读(25)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示