zoukankan      html  css  js  c++  java
  • LeetCode 124. 二叉树中的最大路径和(Binary Tree Maximum Path Sum)

    题目描述

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

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

    示例 1:

    输入: [1,2,3]
    
           1
          / 
         2   3
    
    输出: 6
    

    示例 2:

    输入: [-10,9,20,null,null,15,7]
    
       -10
       / 
      9  20
        /  
       15   7
    
    输出: 42

    解题思路

    利用后序遍历的思想,先分别求出左右子树中由根节点发出的最大路径,然后记录当前的最大路径和为根节点加左右路径和的最大值,再返回当前子树由根节点发出的最大路径和。

    代码

     1 /**
     2  * Definition for a binary tree node.
     3  * struct TreeNode {
     4  *     int val;
     5  *     TreeNode *left;
     6  *     TreeNode *right;
     7  *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
     8  * };
     9  */
    10 class Solution {
    11 public:
    12     int findPath(TreeNode* root, int &maxSum){
    13         int left = 0, right = 0, val = root->val;
    14         if(root->left){
    15             left = findPath(root->left, maxSum);
    16             if(left > 0) val += left;
    17         }
    18         if(root->right){
    19             right = findPath(root->right, maxSum);
    20             if(right > 0) val += right;
    21         }
    22         maxSum = max(maxSum, val);
    23         return max(root->val, root->val + max(left, right));
    24     }
    25     int maxPathSum(TreeNode* root) {
    26         if(root == NULL) return 0;
    27         int maxSum = INT_MIN;
    28         findPath(root, maxSum);
    29         return maxSum;
    30     }
    31 };
  • 相关阅读:
    9、Spring Boot 2.x 集成 Thymeleaf
    【专题】Spring Boot 2.x 面试题
    8、Spring Boot 2.x 服务器部署
    7、Spring Boot 2.x 集成 Redis
    6、Spring Boot 2.x 集成 MyBatis
    5、Spring Boot 2.x 启动原理解析
    4、Spring Boot 2.x 自动配置原理
    3、Spring Boot 2.x 核心技术
    2、Spring Boot 2.x 快速入门
    centOS下安装JDK1.8.60,glassfish4.1.1以及MySQL
  • 原文地址:https://www.cnblogs.com/wmx24/p/9713271.html
Copyright © 2011-2022 走看看