zoukankan      html  css  js  c++  java
  • [LeetCode] Binary Tree Maximum Path Sum Solution


    Given a binary tree, find the maximum path sum.
    The path may start and end at any node in the tree.
    For example:
    Given the below binary tree,
           1
    / \
    2 3
    Return 6.
    » Solve this problem

    [Thoughts]
    For each node like following, there should be four ways existing for max path:

    1. Node only
    2. L-sub + Node
    3. R-sub + Node
    4. L-sub + Node + R-sub

    Keep trace the four path and pick up the max one in the end.

    [Code]
    1:    int maxPathSum(TreeNode *root) {  
    2: // Start typing your C/C++ solution below
    3: // DO NOT write int main() function
    4: int maxAcrossRoot=INT_MIN;
    5: int maxEndByRoot = GetMax(root, maxAcrossRoot);
    6: return std::max(maxAcrossRoot, maxEndByRoot);
    7: }
    8: int GetMax(TreeNode *node, int& maxAcrossRoot)
    9: {
    10: if(node == NULL) return 0;
    11: int left = GetMax(node->left, maxAcrossRoot);
    12: int right = GetMax(node->right, maxAcrossRoot);
    13: int cMax = node->val;
    14: if(left>0)
    15: cMax+=left;
    16: if(rifht>0)
    17: cMax+=right;
    18: maxAcrossRoot = std::max(maxAcrossRoot, cMax);
    19: return std::max(
    20: node->val,
    21: std::max(node->val+left, node->val+right));
    22: }




  • 相关阅读:
    置换笔记
    7.23
    Conveyor Belts
    CF #134 A~D
    Blocks && Fixing the Great wall
    Kakuro
    Deadlock Detection
    关于KeyFile的破解,含注册机源代码
    BMP位图之代码实现
    BMP位图之8位位图(三)
  • 原文地址:https://www.cnblogs.com/codingtmd/p/5078924.html
Copyright © 2011-2022 走看看