687. 最长同值路径
687. 最长同值路径
给定一个二叉树的 root ,返回 最长的路径的长度 ,这个路径中的 每个节点具有相同值 。 这条路径可以经过也可以不经过根节点。
两个节点之间的路径长度 由它们之间的边数表示。
示例 1:

输入:root = [5,4,5,1,1,5] 输出:2
示例 2:

输入:root = [1,4,5,4,4,5] 输出:2
提示:
- 树的节点数的范围是
[0, 104] -1000 <= Node.val <= 1000- 树的深度将不超过
1000
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
func longestUnivaluePath(root *TreeNode) (ans int) {
var dfs func(*TreeNode) int
dfs = func(node *TreeNode) int {
if node == nil {
return 0
}
left := dfs(node.Left)
right := dfs(node.Right)
left1 , right1 := 0,0
if node.Left != nil && node.Left.Val == node.Val {
left1 = left + 1
}
if node.Right != nil && node.Right.Val == node.Val{
right1 = right + 1
}
// 这里是关键!!!
ans = max(ans,left1+right1)
// 返回其子树的最大路径长度
return max(left1,right1)
}
dfs(root)
return ans
}
func max(a, b int) int {
if b > a {
return b
}
return a
}
浙公网安备 33010602011771号