二叉树遍历应用(dfs)124. Binary Tree Maximum Path Sum

来源:互联网 发布:java单例模式双重锁 编辑:程序博客网 时间:2024/06/05 10:44

这里写图片描述

/** * Definition for a binary tree node. * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */// LeetCode, Binary Tree Maximum Path Sum// 时间复杂度O(n),空间复杂度O(logn)class Solution {public:    int maxSum = -99999999;    int maxPathSum(TreeNode *root) {        if (!root)            return 0;        dfs(root);        return maxSum;    }    int dfs(TreeNode *root)    {        if (!root)            return 0;        int sum = root->val;        int l = dfs(root->left);        int r = dfs(root->right);        if (l>0)            sum+=l;        if(r>0)            sum+=r;        maxSum = max(sum, maxSum);        return max(l,r)>0? max(l,r)+root->val: root->val;    }};

不是最优
这里写图片描述

0 0
原创粉丝点击