二叉树的最大路径和C++
二叉树中的 路径 被定义为一条节点序列,序列中每对相邻节点之间都存在一条边。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点,且不一定经过根节点。
路径和 是路径中各节点值的总和。
给你一个二叉树的根节点 root ,返回其 最大路径和 。
和二叉树的直径类似
class Solution {
public:int ans=INT_MIN;int dfs(TreeNode* node){if(node == nullptr) return 0; int l_val = dfs(node->left);int r_val = dfs(node->right);ans = max(ans, l_val+r_val+node->val); // 更新return max(max(l_val,r_val)+node->val, 0); // 若节点为负数,则直接返回0,负数节点越多,元素和越小,不符合题意,所以负数节点直接处理为0}int maxPathSum(TreeNode* root) {dfs(root);return ans;}
};