美文网首页程序员
LeetCode124. 二叉树中的最大路径和

LeetCode124. 二叉树中的最大路径和

作者: 错觉_641e | 来源:发表于2020-08-22 21:53 被阅读0次

    主要代码:

    int ans = INT_MIN;

    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;

    }


    心得:   

        1.二叉树的  前中后序遍历  是个框架,根据题目特点,需要在递归过程中取值做相应计算

          ——框架的重点在于 : 二叉树遍历顺序(前中后遍历)、递归函数返回值 

          ——框架细节:当前递归所需保存的中间值,根据题目要求做中间计算、计算结果为:返回值和贯穿整个递归过程所需要维护的变量(本题为最大值ans)


        2.本题二叉树定义如下:

    路径被定义为一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点

        ——路径由节点组成,节点为二叉树的节点,二叉树的创建为递归创建,故可把当前子树的最大值归到当前子树的根节点上(代码体现在返回值)

        ——本题为二叉树的路径问题、求最值(节点value累和)

        ————划分小段子路径:子树的子节点取大值归到子树根节点

        ————宏观来看整条路径,任意节点到任意节点,路径在二叉树中的最高节点的中序遍历取累和,不断的更新ans取最大值


        3.对于存在负数节点的处理:化为0,路径上表现为不经过此节点

    相关文章

      网友评论

        本文标题:LeetCode124. 二叉树中的最大路径和

        本文链接:https://www.haomeiwen.com/subject/zmcbjktx.html