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;
    }
};
相关推荐
大数据张老师1 小时前
数据结构——邻接矩阵
数据结构·算法
低音钢琴1 小时前
【人工智能系列:机器学习学习和进阶01】机器学习初学者指南:理解核心算法与应用
人工智能·算法·机器学习
傻童:CPU3 小时前
C语言需要掌握的基础知识点之前缀和
java·c语言·算法
又见野草4 小时前
软件设计师知识点总结:数据结构与算法(超级详细)
数据结构·算法·排序算法
GalaxyPokemon4 小时前
有一个服务器,用于提供HTTP服务,但是需要限制每个用户在任意的100秒内只能请求60次,怎么实现这个功能
算法
fl1768315 小时前
基于opencv+Mediapipe+CNN实现用手势识别控制对鼠标操控python源码+项目说明+设计文档
算法
K 旺仔小馒头5 小时前
优选算法:01 双指针巧解移动零问题
c++·算法·刷题
sali-tec5 小时前
C# 基于halcon的视觉工作流-章49-网面破损
开发语言·图像处理·算法·计算机视觉·c#
ysa0510305 小时前
Fenwick 树进行快速统计
算法
im_AMBER6 小时前
Leetcode 33
算法·leetcode·职场和发展