题目
路径:被定义为一条从树中任意节点出发,沿父节点-子节点连接,达到任意节点的序列。同一个节点在一条路径序列中至多出现一次 。该路径至少包含一个节点,且不一定经过根节点
路径和是路径中各节点值的总和
给出一个二叉树的根节点root,返回其最大路径和
示例1:
输入:root = [1, 2, 3]
输出:6
代码:
/*** 剑指offer解法* @param root* @param maxSum* @return*/public int getMaxCount(TreeNode<Integer> root,int[] maxSum){if(root==null){return 0;}int[] maxSumLeft={Integer.MIN_VALUE};int left=Math.max(0,getMaxCount(root.lTreeNode,maxSumLeft));int[] maxSumRight={Integer.MIN_VALUE};int right=Math.max(0,getMaxCount(root.rTreeNode,maxSumRight));maxSum[0] = Math.max(maxSumLeft[0], maxSumRight[0]);maxSum[0]=Math.max(maxSum[0], root.data+left+right);int s=root.data+Math.max(left,right);return s;}public int maxPathSum(TreeNode<Integer> root){int[] maxSum={Integer.MIN_VALUE};getMaxCount(root,maxSum);return maxSum[0];}
