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 fb67509

Browse files
committed
Update 0687. 最长同值路径.md
1 parent f218099 commit fb67509

File tree

1 file changed

+8
-8
lines changed

1 file changed

+8
-8
lines changed

‎Solutions/0687. 最长同值路径.md‎

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -48,30 +48,30 @@
4848

4949
根据路径是否穿过根节点,我们可以将二叉树分为两种:
5050

51-
1. 直径长度所对应的路径穿过根节点,这种情况下:$二叉树的直径 = 左子树高度 + 右子树高度$。
52-
2. 直径长度所对应的路径不穿过根节点,这种情况下:$二叉树的直径 = 所有子树中最大直径长度$。
51+
1. 直径长度所对应的路径穿过根节点,这种情况下:$\text{二叉树的直径} = \text{左子树高度} + \text{右子树高度}$。
52+
2. 直径长度所对应的路径不穿过根节点,这种情况下:$\text{二叉树的直径} = \text{所有子树中最大直径长度}$。
5353

54-
也就是说根为 $root$ 的二叉树的直径长度可能来自于 $左子树高度 + 右子树高度,ドル也可能来自于 $子树中的最大直径,ドル即 $二叉树的直径 = max(左子树高度 + 右子树高度, \quad 所有子树中最大直径长度)$。
54+
也就是说根为 $root$ 的二叉树的直径长度可能来自于 $\text{左子树高度} + \text{右子树高度},ドル也可能来自于 $\text{子树中的最大直径},ドル即 $\text{二叉树的直径} = max(\text{左子树高度} + \text{右子树高度}, \quad \text{所有子树中最大直径长度})$。
5555

5656
那么现在问题就变成为如何求「子树的高度」和「子树中的最大直径」。
5757

5858
1. 子树的高度:我们可以利用深度优先搜索方法,递归遍历左右子树,并分别返回左右子树的高度。
59-
2. 子树中的最大直径:我们可以在递归求解子树高度的时候维护一个 $ans$ 变量,用于记录所有 $左子树高度 + 右子树高度$ 中的最大值。
59+
2. 子树中的最大直径:我们可以在递归求解子树高度的时候维护一个 $ans$ 变量,用于记录所有 $\text{左子树高度} + \text{右子树高度$ 中的最大值。
6060

6161
最终 $ans$ 就是我们所求的该二叉树的最大直径。
6262

6363
接下来我们再来加上「路径中每个节点具有相同值」这个限制条件。
6464

6565
1. 「左子树高度」应变为「左子树最长同值路径长度」。
6666
2. 「右子树高度」应变为「右子树最长同值路径长度」。
67-
3. 题目变为求「二叉树的最长同值路径长度」,式子为:$二叉树的最长同值路径长度 = max(左子树最长同值路径长度 + 右子树最长同值路径长度, \quad 所有子树中最长同值路径长度)$。
67+
3. 题目变为求「二叉树的最长同值路径长度」,式子为:$\text{二叉树的最长同值路径长度} = max(\text{左子树最长同值路径长度} + \text{右子树最长同值路径长度}, \quad \text{所有子树中最长同值路径长度})$。
6868

6969
在递归遍历的时候,我们还需要当前节点与左右子节点的值的相同情况,来维护更新「包含当前节点的最长同值路径长度」。
7070

71-
1. 在递归遍历左子树时,如果当前节点与左子树的值相同,则:$包含当前节点向左的最长同值路径长度 = 左子树最长同值路径长度 + 1,ドル否则为 0ドル$。
72-
2. 在递归遍历左子树时,如果当前节点与左子树的值相同,则:$包含当前节点向右的最长同值路径长度 = 右子树最长同值路径长度 + 1,ドル否则为 0ドル$。
71+
1. 在递归遍历左子树时,如果当前节点与左子树的值相同,则:$\text{包含当前节点向左的最长同值路径长度} = \text{左子树最长同值路径长度} + 1,ドル否则为 0ドル$。
72+
2. 在递归遍历左子树时,如果当前节点与左子树的值相同,则:$\text{包含当前节点向右的最长同值路径长度} = \text{右子树最长同值路径长度} + 1,ドル否则为 0ドル$。
7373

74-
则:$包含当前节点向左的最长同值路径长度 = max(包含当前节点向左的最长同值路径长度, \quad 包含当前节点向右的最长同值路径长度)$。
74+
则:$\text{包含当前节点向左的最长同值路径长度} = max(\text{包含当前节点向左的最长同值路径长度}, \quad \text{包含当前节点向右的最长同值路径长度})$。
7575

7676
### 思路 1:代码
7777

0 commit comments

Comments
(0)

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