首页 > 代码库 > [LeetCode] Binary Tree Maximum Path Sum(递归)
[LeetCode] Binary Tree Maximum Path Sum(递归)
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
.
/** * 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 maxPathSum(TreeNode *root) { if(root==NULL) return 0; set<int> s; return recursion(root,root,s); }private: int recursion(TreeNode *p,TreeNode *root,set<int> &s){ int left = 0 ,right=0 ,parent = p->val; int max = p->val; if(p->left==NULL && p->right==NULL) return max; if(p->left) left = recursion(p->left,root,s); if(p->right) right = recursion(p->right,root,s); if(left>max && p->left) s.insert(left); if(right>max && p->right) s.insert(right); if(left+parent>max) max = left+parent; if(right+parent>max) max = right+parent; if(right+left+parent>max) s.insert(right+left+parent); if(p==root && !s.empty()){ set<int>::iterator iter = s.end(); iter--; return (max>(*iter)?max:(*iter)); } return max; }};
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。