算法训练:Binary Tree Maximum Path Sum
来源:互联网 发布:c 网络编程基础 编辑:程序博客网 时间:2024/06/06 07:01
题目链接:https://leetcode.com/problems/binary-tree-maximum-path-sum/#/description
题目描述:
给定一棵二叉树,求其最大路径和。 这里的路径可以是从任何一个节点到达另一个节点。
解题思路:
最大路径和的可能性:
(1)根节点
(2)根节点+右子树最大路径和
(3)根节点+左子树最大路径和
(4)根节点+右子树最大路径和+左子树最大路径和
(5)右子树最大路径和
(6)右子树最大路径和
分别遍历左子树和右子树得到左子树和右子树的最大路径和,然后比较以上四种情况,其最大值赋给maxval
class Solution { public: int maxSum(TreeNode* root, int& maxval) { if (root == NULL) return 0; int leftsum = maxSum(root->left,maxval); //递归求左支路的最大路径和 int rightsum = maxSum(root->right,maxval); //递归求右支路的最大路径和 //当前路径和 int currSum = max(max(leftsum + root->val, rightsum + root->val), root->val); int currMax = max(max(currSum, leftsum + rightsum + root->val),max(leftsum,rightsum)); //用当前最大来更新全局最大 maxval = max(currMax, maxval); return currSum;//返回当前路径和 } int maxPathSum(TreeNode* root) { if (root == NULL) return 0; int maxval=0; maxSum(root,maxval); return maxval; } };
运行结果:
Your Input
[-1,5,3,8,20,6,-7]
Your answer
33
Expected answer
33
阅读全文
0 0
- 算法训练:Binary Tree Maximum Path Sum
- Binary Tree Maximum Path Sum
- Binary Tree Maximum Path Sum
- Binary Tree Maximum Path Sum
- Binary Tree Maximum Path Sum
- Binary Tree Maximum Path Sum
- Binary Tree Maximum Path Sum
- Binary Tree Maximum Path Sum
- Binary Tree Maximum Path Sum
- Binary Tree Maximum Path Sum
- Binary Tree Maximum Path Sum
- Binary Tree Maximum Path Sum
- Binary Tree Maximum Path Sum
- Binary Tree Maximum Path Sum
- Binary Tree Maximum Path Sum
- Binary Tree Maximum Path Sum
- Binary Tree Maximum Path Sum
- Binary Tree Maximum Path Sum
- 整理服务器防DDOS攻击方案
- jasperreport+jaspersoft生成报表并集成到spring boot中
- 【51Nod】1433 0和5
- Java实现-前序遍历和中序遍历构建二叉树
- java线程的创建和启动
- 算法训练:Binary Tree Maximum Path Sum
- lua protobuff 不支持嵌套修改protoc-gen-lua(记录)
- 认识JVM
- JBoss AS JBoss EAP 和wildfly
- 百度echatrs 异步加载数据
- 【OpenCV3】将图像指定区域使用另一图像(或ROI)覆盖
- 多人在线网络游戏实现细节
- mysql之 xtrabackup原理、备份日志分析、备份信息获取
- Django Channels 学习笔记