zoukankan      html  css  js  c++  java
  • [每日一题2020.06.21]leetcode #124 DFS二叉树

    题目

    1592722350144

    dfs求每一个节点向左走最大路径 + 节点值 + 向右走最大路径 搜索完后的最大值就是答案

    dfs的出口和规则自己想有时候老想不通, 一看答案又一下子明白, 还是题目刷少了没经验

    class Solution {
    public:
        int maxSum = 0xc0c0c0c0; // 全局变量, 记录ans
        int dfs(TreeNode* root) {
            if (root == NULL) return 0;
            int left = max (0, dfs(root->left));    // 记录向左走可以达到的最大值
            int right = max (0, dfs(root->right));  // 记录向右走可以达到的最大值
            int nowSum = left + right + root->val;  // 对于每一个节点, 其最大值 = 向左走最大值 + 节点值 + 向右走最大值
            maxSum = max(maxSum, nowSum); // 最大值更新
            return root->val + max(left, right); // 返回到上一层
        }
    
        int maxPathSum(TreeNode* root) {
            dfs(root);
            return maxSum;
        }
    };
    
  • 相关阅读:
    抽象代数学习笔记
    WC2021 游记
    简单的数学题
    前缀和公式
    杜教筛
    [模板]BZOJ4756线段树合并
    SPOJ 694
    bzoj1367 可并堆
    莫比乌斯反演(理论)
    es6 Set数据结构
  • 原文地址:https://www.cnblogs.com/roccoshi/p/13172446.html
Copyright © 2011-2022 走看看