687. Longest Univalue Path


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
https://leetcode.com/problems/longest-univalue-path/