首页 > 其他分享 >124.二叉树的最大路径和

124.二叉树的最大路径和

时间:2022-10-15 13:46:00浏览次数:49  
标签:right val 路径 124 二叉树 root 节点 left

路径 被定义为一条从树中任意节点出发,沿父节点-子节点连接,达到任意节点的序列。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点,且不一定经过根节点。

路径和 是路径中各节点值的总和。

给你一个二叉树的根节点 root ,返回其 最大路径和 。

示例 1:

 

 

 

输入:root = [1,2,3]
输出:6
解释:最优路径是 2 -> 1 -> 3 ,路径和为 2 + 1 + 3 = 6

示例 2:

 

 

输入:root = [-10,9,20,null,null,15,7]
输出:42
解释:最优路径是 15 -> 20 -> 7 ,路径和为 15 + 20 + 7 = 42

提示:

  • 树中节点数目范围是 [1, 3 * 104]
  • -1000 <= Node.val <= 1000
 1 /**
 2  * Definition for a binary tree node.
 3  * function TreeNode(val, left, right) {
 4  *     this.val = (val===undefined ? 0 : val)
 5  *     this.left = (left===undefined ? null : left)
 6  *     this.right = (right===undefined ? null : right)
 7  * }
 8  */
 9 /**
10  * @param {TreeNode} root
11  * @return {number}
12  */
13 var maxPathSum = function(root) {
14 let maxSum=Number.MIN_SAFE_INTEGER;//最大路径和
15 const dfs = (root)=>{
16     if(root === null){//遍历到null节点,收益0
17         return 0;
18     }
19     const left = dfs(root.left);//左子树提供的最大路径和
20     const right = dfs(root.right);//右子树提供的最大路径和
21     const innerMaxSum=left+root.val+right;//当前子树内部的最大路径和
22     maxSum = Math.max(maxSum,innerMaxSum);//挑战最大记录
23     const outputMaxSum =root.val+Math.max(0,left,right);//当前子树对外提供的最大和
24     //如果对外提供的路径和为负,直接返回0,否则正常返回
25     return outputMaxSum <= 0?0:outputMaxSum;
26 }
27 dfs(root);//递归的入口
28 return maxSum;
29 };

 

标签:right,val,路径,124,二叉树,root,节点,left
From: https://www.cnblogs.com/icyyyy/p/16794006.html

相关文章

  • 文件路径中的斜杠和反斜杠有什么区别
    Unix使用斜杆/作为路径分隔符,而web应用最新使用在Unix系统上面,所以目前所有的网络地址都采用斜杆/作为分隔符。Windows由于使用斜杆/作为DOS命令提示符的参数标志了,......
  • 图的广度优先搜索和二叉树的层序遍历其实差不多
    图的广度优先搜索和二叉树的层序遍历其实差不多,不同的是在图中没有根节点,你可以随便选择一个节点,当作起始节点,和二叉树的一样入队,访问,出队,判断顶点是否有邻接顶点,如果有邻......
  • 从路径中拆分出文件名和后缀
    "函数:拆分文件绝对路径long_filename=l_local_file_path"文件绝对路径C://DOC/TEST.TXTpure_filename=l_pure_filename......
  • 94. 二叉树的中序遍历 (easy)
     递归:左根右 /***Definitionforabinarytreenode.*structTreeNode{*intval;*TreeNode*left;*TreeNode*right;*TreeNode():val(0),left(nul......
  • 计算二叉树的最大宽度
    求非空二叉树的宽度算法思想:层序遍历二叉树,并用两个队列A,B交替存储结点,当队列A中元素为空时队列B就存储了下一层的所有结点,同理,队列B为空时队列A也就存储了下一层的所有......
  • linux绝对路径和相对路径
    前言在操作系统中,路径指的是文件的存放位置,例如windows中C:\Users\HEAD表HEAD目录的路径。在linux中类似,只是路径的描述方式有区别,例如/home/scg表示scg目录的路径。在任......
  • leetcode-62. 不同路径 初级dp
    62.不同路径首先,机器人每次走路只能向下或者向右走一步根据网格是m*n,初始化动态规划数组,dp[m][n],那么如果机器人走到i,j位置,有多少种情况呢?首先分成子问题,机器人怎么走......
  • 做题记录整理数据结构2 P4551 最长异或路径(2022/10/13)
    P4551最长异或路径其实我也不知道算不算数据结构,反正就是01trie,不过题目本身似乎也是一个模板?https://www.luogu.com.cn/blog/108510/solution-p4551(由于一看到异或就......
  • 代码随想录 | 进阶二叉树
    二叉树的构造默认如下:/***Definitionforabinarytreenode.*publicclassTreeNode{*intval;*TreeNodeleft;*TreeNoderight;*......
  • 二叉树的序列化和反序列化
    二叉树的序列化和反序列化作者:Grey原文地址:博客园:二叉树的序列化和反序列化CSDN:二叉树的序列化和反序列化题目链接见:LeetCode297.SerializeandDeserializeBinary......