124. 二叉树中的最大路径和
给定一个非空二叉树,返回其最大路径和。 本题中,路径被定义为一条从树中任意节点出发,沿父节点-子节点连接,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。
**
解题思路
后序遍历
class Solution {public:int ans = INT_MIN;int maxPathSum(TreeNode* root) {oneSideMax(root);return ans;}/*后序遍历框架全局变量ans记录遍历过程中的最大路径和*/int oneSideMax(TreeNode* root) {if( root == nullptr) return 0;int left = max(0,oneSideMax(root->left));//负孩子结点无贡献,所以不要负孩子,只要正孩子int right = max(0,oneSideMax(root->right));ans = max(ans,left + right + root->val);//(左孩子+当前结点+右孩子)构成一条路径,将其与当前记录的最大路径和比较return max(left,right) + root->val;//当前结点与左右孩子中的最大者构成一条路径}};
**