方法:递归 O(n) O(n) class Solution: def __init__(self): self.maxSum = float("-inf") def maxPathSum(self, root: TreeNode) -> int: def maxGain(node): if not ...
分类:
其他好文 时间:
2020-06-22 02:02:46
阅读次数:
70
给定一个非空二叉树,返回其最大路径和。 本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。 示例 1: 输入: [1,2,3] 输出: 6 示例 2: 输入: [-10,9,20,null,null,15,7] 输出: 42 来源:力扣(Le ...
分类:
其他好文 时间:
2020-06-21 23:15:04
阅读次数:
47
124. 二叉树中的最大路径和 给定一个非空二叉树,返回其最大路径和。 本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。 示例: 输入: [1,2,3] 1 / \ 2 3 输出: 6 输入: [-10,9,20,null,null,15, ...
分类:
其他好文 时间:
2020-06-21 21:42:33
阅读次数:
45
124. 二叉树中的最大路径和 题目来源:力扣(LeetCode)https://leetcode-cn.com/problems/binary-tree-maximum-path-sum 题目 给定一个非空二叉树,返回其最大路径和。 本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。 ...
分类:
编程语言 时间:
2020-06-21 19:44:33
阅读次数:
62
题目 dfs求每一个节点向左走最大路径 + 节点值 + 向右走最大路径 搜索完后的最大值就是答案 dfs的出口和规则自己想有时候老想不通, 一看答案又一下子明白, 还是题目刷少了没经验 class Solution { public: int maxSum = 0xc0c0c0c0; // 全局变量 ...
分类:
其他好文 时间:
2020-06-21 15:36:34
阅读次数:
52
前提 如果题目求解目标是S规则,则求解流程可以定成以每一个节点为头节点的子树在S规则下的每一个答案,并且最终答案一定在其中。 套路: 以某个节点X为头节点的子树中,分析答案有哪些可能性,并且这种分析是以X的左子树、X的右子树和X整棵树的角度来考虑可能性的 根据第一步的可能性分析,列出所有需要的信息 ...
分类:
其他好文 时间:
2020-06-21 11:53:26
阅读次数:
79
题目链接:http://poj.org/problem?id=3764 我们可以在O(32*n)时间内求出一个长度为n的序列中取两个数的最大异或,而树中的异或有如下公式:path[x]=path(root,x) xor path(root,y),所以处理出path(root,i)之后就简化成了 简单 ...
分类:
编程语言 时间:
2020-06-18 10:41:11
阅读次数:
56
437. 路径总和 III 给定一个二叉树,它的每个结点都存放着一个整数值。找出路径和等于给定数值的路径总数。路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。二叉树不超过1000个节点,且节点数值范围是 [-1000000,1000000] 的整数。 ...
分类:
其他好文 时间:
2020-06-15 20:54:51
阅读次数:
70
概念定义: 深度优先遍历:深度优先遍历是图论中的经典算法。其利用了深度优先搜索算法可以产生目标图的相应拓扑排序表,采用拓扑排序表可以解决很多相关的图论问题,如最大路径问题等等。 根据深度优先遍历的特点我们利用Java集合类的栈Stack先进后出的特点来实现。我用二叉树来进行深度优先搜索。 广度优先遍 ...
分类:
编程语言 时间:
2020-06-07 21:24:16
阅读次数:
77
Problem 一个无向图,可能有自环,有重边,每条边有一个边权。你可以从任何点出发,任何点结束,可以经过同一个点任意次。但是不能经过同一条边2次,并且你走过的路必须满足所有边的权值严格单调递增,求最长能经过多少条边。 Solution 排序,然后dp[i]代表到达这个点时的最大路径长度,每次更新, ...
分类:
其他好文 时间:
2020-05-24 21:06:26
阅读次数:
64