class Solution:
answer = 0
def longestUnivaluePath(self, root):
def dfs(node):
if not node:
return 0
left = dfs(node.left)
right = dfs(node.right)
# 아래에서 부터 말려올라온거 계산해줌
# 아래가 나랑 같은면 +1임
if node.left and node.left.val == node.val:
left += 1
else:
left = 0
if node.right and node.right.val == node.val:
right += 1
else:
right = 0
# 답은 양옆도 계산해주는데
self.answer = max(self.answer, left + right)
# 위로 올라갈때는 당연히 둘 중 큰거 하나만 리턴해줘야함
return max(left, right)
dfs(root)
return self.answerQ