def longestUnivaluePath(self, root): self.longest = 0 def helper(root): if not root: return 0 l, r = helper(root.left), helper(root.right) left = (l + 1) if root.left and root.left.val == root.val else 0 right = (r + 1) if root.right and root.right.val == root.val else 0 self.longest = max(self.longest, left + right) return max(left, right) helper(root) return self.longest