File tree Expand file tree Collapse file tree 1 file changed +9
-16
lines changed Expand file tree Collapse file tree 1 file changed +9
-16
lines changed Original file line number Diff line number Diff line change @@ -56,27 +56,23 @@ Output: 42
5656
5757 ![ 124.binary-tree-maximum-path-sum] ( https://tva1.sinaimg.cn/large/007S8ZIlly1ghluai4m6dj30hu0cdq46.jpg )
5858
59- 大家可以结合上面的demo来继续理解一下path, 除非你理解了path,否则不要往下看。
59+ 如图红色的部分是最大路径上的节点。 大家可以结合上面的demo来继续理解一下path, 除非你理解了path,否则不要往下看。
6060
6161
62- 树的题目,基本都是考察递归思想的。因此我们需要思考如何去定义我们的递归函数,
63- 在这里我定义了一个递归函数,它的功能是,` 返回以当前节点为根节点的MathPath `
64- 但是有两个条件:
62+ 树的题目,基本都是考察递归思想的。因此我们需要思考如何去定义我们的递归函数,在这里我定义了一个递归函数,它的功能是,` 返回以当前节点为根节点的MaxPath `
6563
66- 1 . 第一是跟节点必须选择
67- 2 . 第二是左右子树只能选择一个
64+ 但是有两个条件:
6865
69- 为什么要有这两个条件?
66+ 1 . 根节点必须选择
67+ 2 . 左右子树只能选择一个
7068
71- 我的想法是原问题可以转化为:
69+ 为什么要有这两个条件?
7270
73- 以每一个节点为根节点,我们分别求出max path ,最后计算最大值, 因此第一个条件需要满足.
71+ 我的想法是原问题可以转化为: 以每一个节点为根节点,分别求出 MaxPath ,最后计算最大值, 因此第一个条件需要满足.
7472
75- 对于第二个,由于递归函数子节点的返回值会被父节点使用,因此我们如果两个孩子都选择了
76- 就不符合max path的定义了,这也是我没有理解题意,绕了很大弯子的原因。
73+ 对于第二个条件,由于递归函数子节点的返回值会被父节点使用,因此我们如果两个孩子都选择了就不符合 MaxPath 的定义了。实际上这道题,当遍历到某一个节点的时候,我们需要子节点的信息,然后同时结合自身的 val 来决定要不要选取左右子树以及选取的话要选哪一个, 因此这个过程本质上就是` 后序遍历 `
7774
78-
79- 因此我的做法就是不断调用递归函数,然后在调用过程中不断计算和更新max,最后在主函数中将max返回即可。
75+ 基本算法就是不断调用递归函数,然后在调用过程中不断计算和更新 MaxPath,最后在主函数中将 MaxPath 返回即可。
8076
8177## 关键点解析
8278
@@ -181,6 +177,3 @@ class Solution:
181177## 相关题目
182178- [ 113.path-sum-ii] ( ./113.path-sum-ii.md )
183179
184- ## 扩展
185-
186- 实际上这道题,当遍历到某一个节点的时候,我们需要子节点的信息,然后同时结合自身的 val 来决定要不要选取左右子树。 因此这个过程本质上就是` 后序遍历 ` 。
You can’t perform that action at this time.
0 commit comments