• [leetcode]Binary Tree Maximum Path Sum


    二叉树,找出任意一点到另一点的路径,使得和最大.

    开始sb看错题了...

    其实嘛...我们递归的来看...

    如果只是一个节点,那么当然就是这个节点的值了.

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

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

    我盟从下往上找...

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

    /**
     * Definition for binary tree
     * struct TreeNode {
     *     int val;
     *     TreeNode *left;
     *     TreeNode *right;
     *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
     * };
     */
    class Solution {
    public:
        int ans;
        int scanT(TreeNode* root){
            if(root == NULL) return 0;
            int left = scanT(root -> left);
            int right = scanT(root -> right);
            int val = root -> val;
            if(left > 0) val += left;
            if(right > 0) val += right;
            if(val > ans) ans = val;
            return max(root->val ,max(left +  root -> val , right + root -> val));
        }
        int maxPathSum(TreeNode *root) {
            // Start typing your C/C++ solution below
            // DO NOT write int main() function
            if(root == NULL) return 0;
            ans = root -> val;
            scanT(root);
            return ans;
        }
    };
  • 相关阅读:
    二纬码标签打印
    写JQuery 插件
    Java中System.getProperty()的参数
    (Java实现) 车站
    (Java实现) 活动选择
    (Java实现) 活动选择
    (Java实现) 过河卒
    (Java实现) 过河卒
    (Java实现) N皇后问题
    (Java实现) N皇后问题
  • 原文地址:https://www.cnblogs.com/x1957/p/3275854.html
Copyright © 2020-2023  润新知