leetcode日记(107)二叉树中的最大路径和

看到困难题被吓了一下,实际上做起来还是很简单的。

思路是DFS+递归,先要记录一个最终结果result,每次递归左右节点的最大路径,选左右里最大的连接树节点,还要比较result和左右中节点加起来的路径,若左右中节点加起来的路径大则替换result。

cpp 复制代码
/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */
class Solution {
public:
    int result=-1000;
    int dfs(TreeNode* tree){
        if(tree==NULL) return 0;
        int l=dfs(tree->left);
        int r=dfs(tree->right);
        int treemax;
        if(l>0&&r>0) result=max(result,l+r+tree->val);
        if(l>0||r>0) treemax=max(l,r)+tree->val;
        else treemax=tree->val;
        result=max(result,treemax);
        return treemax;
    }
    int maxPathSum(TreeNode* root) {
        dfs(root);
        return result;
    }
};
相关推荐
Zzz不能停1 分钟前
堆排序算法及大小堆区别
数据结构·算法
zd84510150012 分钟前
stm32f407 电机多轴联动算法
stm32·单片机·算法
代码游侠14 分钟前
应用——Linux FrameBuffer图形显示与多线程消息系统项目
linux·运维·服务器·开发语言·前端·算法
Eloudy14 分钟前
矩阵张量积(Kronecker积)的代数性质与定理
算法·量子计算
多米Domi01125 分钟前
0x3f 第25天 黑马web (145-167)hot100链表
数据结构·python·算法·leetcode·链表
LYFlied25 分钟前
【每日算法】LeetCode 207. 课程表
算法·leetcode·职场和发展
sali-tec27 分钟前
C# 基于OpenCv的视觉工作流-章7-膨胀
图像处理·人工智能·opencv·算法·计算机视觉
叫我:松哥30 分钟前
基于机器学习的地震风险评估与可视化系统,采用Flask后端与Bootstrap前端,系统集成DBSCAN空间聚类算法与随机森林算法
前端·算法·机器学习·flask·bootstrap·echarts·聚类
一起养小猫32 分钟前
LeetCode100天Day12-删除重复项与删除重复项II
java·数据结构·算法·leetcode
码农丁丁35 分钟前
谈谈面试的本质
面试·职场和发展·技术管理·ai时代的技术管理