二叉树中的最大路径和

Posted Alice_yufeng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二叉树中的最大路径和相关的知识,希望对你有一定的参考价值。

/**
 * 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 pathSum = Integer.MIN_VALUE;

    public int maxPathSum(TreeNode root) 
        dfs(root);
        return pathSum;
    

    // dfs 返回以该节点为端点的最大路径和
    public int dfs(TreeNode node) 
        if (node == null) return 0;
        int left = dfs(node.left);
        int right = dfs(node.right);
        // 当前节点有四个选择:
        // 1)独立成线,直接返回自己的值 
        // 2)跟左子节点合成一条路径 
        // 3)跟右子节点合成一条路径
        int ret = Math.max(node.val, node.val + Math.max(left, right));
        // 4)以自己为桥梁,跟左、右子节点合并成一条路径
        pathSum = Math.max(pathSum, Math.max(ret, node.val + left + right));
        return ret;
    

以上是关于二叉树中的最大路径和的主要内容,如果未能解决你的问题,请参考以下文章

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

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

LeetCode 124. 二叉树中的最大路径和 | Python

二叉树中的最大和路径

387,二叉树中的最大路径和

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