Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit d41dea7

Browse files
committed
Update 01.Tree-DP.md
1 parent e1c744f commit d41dea7

File tree

1 file changed

+8
-8
lines changed

1 file changed

+8
-8
lines changed

‎Contents/10.Dynamic-Programming/06.Tree-DP/01.Tree-DP.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -78,11 +78,11 @@
7878
1. 最大路径和中对应路径穿过根节点。
7979
2. 最大路径和中对应路径不穿过根节点。
8080

81-
如果最大路径和中对应路径穿过根节点,则:$该二叉树的最大路径和 = 左子树中最大贡献值 + 右子树中最大贡献值 + 当前节点值$
81+
如果最大路径和中对应路径穿过根节点,则:**该二叉树的最大路径和 = 左子树中最大贡献值 + 右子树中最大贡献值 + 当前节点值**
8282

83-
而如果最大路径和中对应路径不穿过根节点,则:$该二叉树的最大路径和 = 所有子树中最大路径和$
83+
而如果最大路径和中对应路径不穿过根节点,则:**该二叉树的最大路径和 = 所有子树中最大路径和**
8484

85-
即:$该二叉树的最大路径和 = max(左子树中最大贡献值 + 右子树中最大贡献值 + 当前节点值, \quad 所有子树中最大路径和)$
85+
即:**该二叉树的最大路径和 = max(左子树中最大贡献值 + 右子树中最大贡献值 + 当前节点值,所有子树中最大路径和)**
8686

8787
对此我们可以使用深度优先搜索递归遍历二叉树,并在递归遍历的同时,维护一个最大路径和变量 $ans$。
8888

@@ -99,7 +99,7 @@
9999
2. 递归计算左子树的最大贡献值为 $left\underline{}max$。
100100
3. 递归计算右子树的最大贡献值为 $right\underline{}max$。
101101
4. 更新维护最大路径和变量,即 $self.ans = max \lbrace self.ans, \quad left\underline{}max + right\underline{}max + node.val \rbrace$。
102-
5. 返回以当前节点为根节点,并且经过该节点的最大贡献值。即返回 $当前节点值 + 左右子节点提供的最大贡献值中较大的一个$
102+
5. 返回以当前节点为根节点,并且经过该节点的最大贡献值。即返回 **当前节点值 + 左右子节点提供的最大贡献值中较大的一个**
103103
6. 最终 $self.ans$ 即为答案。
104104

105105
##### 思路 1:代码
@@ -190,10 +190,10 @@ class Solution:
190190

191191
对于根节点为 $u$ 的树来说:
192192

193-
1. 如果其最长路径经过根节点 $u,ドル则 $最长路径长度 = 某子树中的最长路径长度 + 另一子树中的最长路径长度 + 1$
194-
2. 如果其最长路径不经过根节点 $u,ドル则 $最长路径长度 = 某个子树中的最长路径长度$
193+
1. 如果其最长路径经过根节点 $u,ドル则:**最长路径长度 = 某子树中的最长路径长度 + 另一子树中的最长路径长度 + 1**
194+
2. 如果其最长路径不经过根节点 $u,ドル则:**最长路径长度 = 某个子树中的最长路径长度**
195195

196-
即:$最长路径长度 = max(某子树中的最长路径长度 + 另一子树中的最长路径长度 + 1, \quad 某个子树中的最长路径长度)$
196+
即:**最长路径长度 = max(某子树中的最长路径长度 + 另一子树中的最长路径长度 + 1,某个子树中的最长路径长度)**
197197

198198
对此,我们可以使用深度优先搜索递归遍历 $u$ 的所有相邻节点 $v,ドル并在递归遍历的同时,维护一个全局最大路径和变量 $ans,ドル以及当前节点 $u$ 的最大路径长度变量 $u\underline{}len$。
199199

@@ -203,7 +203,7 @@ class Solution:
203203

204204
因为题目限定了「相邻节点字符不同」,所以在更新全局最长路径长度和当前节点 $u$ 的最长路径长度时,我们需要判断一下节点 $u$ 与相邻节点 $v$ 的字符是否相同,只有在字符不同的条件下,才能够更新维护。
205205

206-
最后,因为题目要求的是树的直径(树的最长路径长度)中的节点个数,而:$路径的节点 = 路径长度 + 1$,所以最后我们返回 $self.ans + 1$ 作为答案。
206+
最后,因为题目要求的是树的直径(树的最长路径长度)中的节点个数,而:**路径的节点 = 路径长度 + 1**,所以最后我们返回 $self.ans + 1$ 作为答案。
207207

208208
##### 思路 1:代码
209209

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /