• LeetCode(124) Binary Tree Maximum Path Sum


    题目

    Given a binary tree, find the maximum path sum.

    For this problem, a path is defined as any sequence of nodes from some starting node to any node in the tree along the parent-child connections. The path does not need to go through the root.

    For example:
    Given the below binary tree,

           1
          / 
         2   3
    

     

    Return 6.

    分析

    给定一颗二叉树,求其最大路径和。对于二叉树,算法大多可以选择递归解决,此题也不例外。
    如果只是一个节点,那么当然就是这个节点的值了.

    如果这个作为root,那么最长路应该就是..

    F(left) + F(right) + val...当然如果left,或者right<0就不用加了的= =

    从下往上递归遍历...

    如果不这个不是root,那么就不能把left和right加起来了...因为只是一条路...


    AC代码

     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 
    11 class Solution {
    12 public:
    13     int maxVal = INT_MIN;
    14     int maxPathSum(TreeNode* root) {
    15         if (root == NULL)
    16             return 0;
    17 
    18         maxSum(root);
    19         return maxVal;
    20     }
    21 
    22     /*递归函数*/
    23     int maxSum(TreeNode *root)
    24     {
    25         if (root == NULL)
    26             return 0;
    27 
    28         /*求以root为根的当前子树的最大路径和*/
    29         int curVal = root->val;
    30         int lmaxSum = maxSum(root->left), rmaxSum = maxSum(root->right);
    31         if (lmaxSum > 0)
    32             curVal += lmaxSum;
    33         if (rmaxSum > 0)
    34             curVal += rmaxSum;
    35 
    36         if (curVal > maxVal)
    37             maxVal = curVal;
    38 
    39         /*返回以当前root为根的子树的最大路径和*/
    40         return max(root->val, max(root->val + lmaxSum, root->val + rmaxSum));
    41     }
    42 };


  • 相关阅读:
    Silverlight Toolkit ListBoxDragDropTarget学习笔记
    函数指针和指针函数(转)
    面试题_反转链表
    C++中的异或运算符^
    面试题_旋转字符串
    面试题_寻找丑数
    模拟一个简单的基于tcp的远程关机程序
    管理指针成员
    赫夫曼树编码问题
    堆的基本操作
  • 原文地址:https://www.cnblogs.com/shine-yr/p/5214701.html
Copyright © 2020-2023  润新知