题目链接:https://www.nowcoder.com/practice/b2aee8dbf02149ba80d95534ab67f01f
# -*- coding:utf-8 -*-
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class LongestPath:
def findPath(self, root):
# write code here
return self.getpath(root)[0]
###返回以root为根节点的树中的最长路径(最长相同颜色的节点路径)和最长单向路径(以root为根节点的一条路径)
def getpath(self,root):
if not root:
return 0,0
cur_maxlen = 1
cur_side = 1
left_maxlen,right_maxlen = 0,0
if root.left:
left_maxlen,left_side = self.getpath(root.left)
if root.left.val == root.val:
cur_maxlen += left_side
cur_side = left_side + 1
if root.right:
right_maxlen,right_side = self.getpath(root.right)
if root.right.val == root.val:
cur_maxlen += right_side
cur_side = right_side + 1
return max([cur_maxlen,left_maxlen,right_maxlen]),cur_side