美文网首页程序员
力扣 124 二叉树中的最大路径和

力扣 124 二叉树中的最大路径和

作者: zhaojinhui | 来源:发表于2020-09-01 11:22 被阅读0次

    题意:找出树的最大路径和

    思路:后跟遍历树,获取当前子树的最大值,并用max记录最终结果

    思想:后跟遍历

    复杂度:时间O(n2),空间O(n)

    /**
     * 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 {
        // 最后的结果
        long max = (long)Integer.MIN_VALUE - 1;
        public int maxPathSum(TreeNode root) {
            long temp = getSubTreeMax(root);
            return (int)Math.max(max, temp);
        }
        
        long getSubTreeMax(TreeNode root) {
            // 叶节点返回0
            if(root == null)
                return 0;        
            // 获取最大的左子树值
            long left = getSubTreeMax(root.left);
            // 获取最大的右子树值
            long right = getSubTreeMax(root.right);
            // 比较当前节点,当前节点+最大左子树值和当前节点+最大右子树值,获取当前最大子树值
            long temp = Math.max(left+root.val, Math.max(right+root.val, root.val));
            // 比较已知最大值,最大子树值和左右子树+当前值,记录当前可能的最大值
            max = Math.max(Math.max(left+right+root.val, temp), max);
            return temp;
        }
    }
    

    相关文章

      网友评论

        本文标题:力扣 124 二叉树中的最大路径和

        本文链接:https://www.haomeiwen.com/subject/wctvsktx.html