zoukankan      html  css  js  c++  java
  • 124. 二叉树中的最大路径和

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

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

    /**
     * Definition for a binary tree node.
     * public class TreeNode {
     *     int val;
     *     TreeNode left;
     *     TreeNode right;
     *     TreeNode(int x) { val = x; }
     * }
     */
    class Solution {
        private int result = Integer.MIN_VALUE; 
            
        public int maxPathSum(TreeNode root) {
            getMax(root);
            return result;
        }
        
        /* postOrderTranversal */
        private int getMax(TreeNode r) {
            if(r == null) return 0;
            /* 并不是两个叶节点的距离 */
            /* 如果子树路径和为负则应当置0表示最大路径不包含子树 */
            int left = Math.max(0, getMax(r.left));         
            int right = Math.max(0, getMax(r.right));
            /* 判断在该节点包含左右子树的路径和是否大于当前最大路径和*/
            result = Math.max(result, r.val + left + right); 
            return Math.max(left, right) + r.val;
        }
    }
    

      

  • 相关阅读:
    连接数据库,创建表,插入数据,更新数据
    常用的表达式转换
    同构与异构
    Bitmap(一)
    ListView的优化尝试
    Animation初探(二)
    Animation初探(一)
    关于ActionBar的坑
    关于Bitmap的加载(二)
    关于Bitmap的加载(一)
  • 原文地址:https://www.cnblogs.com/Stefan-24-Machine/p/10941892.html
Copyright © 2011-2022 走看看