[LeetCode] 687. Longest Univalue Path

yunanยท2021๋…„ 2์›” 6์ผ
0
post-thumbnail

๐Ÿ”ฆ ๋ฌธ์ œ ๋งํฌ

๐Ÿ”Š ํŒŒ์ด์ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ธํ„ฐ๋ทฐ ์ฑ…์„ ์ฐธ๊ณ ํ–ˆ์Šต๋‹ˆ๋‹ค.

  • ๋ฌธ์ œ

์ด์ง„ ํŠธ๋ฆฌ์˜ ๋ฃจํŠธ๊ฐ€ ์ฃผ์–ด์ง€๋ฉด ๊ฒฝ๋กœ์˜ ๊ฐ ๋…ธ๋“œ๊ฐ€ ๋™์ผํ•œ ๊ฐ’์„ ๊ฐ–๋Š” ๊ฐ€์žฅ ๊ธด ๊ฒฝ๋กœ์˜ ๊ธธ์ด๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ๋กœ๋Š” ๋ฃจํŠธ๋ฅผ ํ†ต๊ณผํ•˜๊ฑฐ๋‚˜ ํ†ต๊ณผํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‘ ๋…ธ๋“œ ์‚ฌ์ด์˜ ๊ฒฝ๋กœ ๊ธธ์ด๋Š” ๋…ธ๋“œ ์‚ฌ์ด์˜ ๊ฐ€์žฅ์ž๋ฆฌ ์ˆ˜๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

โœ๏ธ ํ’€์ด


๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„  ํ˜„์žฌ๋…ธ๋“œ์—์„œ ์ž์‹๋…ธ๋“œ์˜ ๊ฐ’๊ณผ ์ž์‹์—์„œ ๊ฐ™์€ ๊ฐ’์ด ์ตœ๋Œ€ ์—ฐ์† ๋ช‡๊ฐœ ์˜€๋Š”์ง€์— ๋Œ€ํ•ด ์•Œ์•„์•ผ ํ•œ๋‹ค.

๋”ฐ๋ผ์„œ,
์ฒซ๋ฒˆ์งธ๋กœ ์ž์‹์—์„œ ๊ฐ™์€ ๊ฐ’์ด ์ตœ๋Œ€ ์—ฐ์† ๋ช‡๊ฐœ ์˜€๋Š”์ง€ ๋ฐ˜ํ™˜๊ฐ’์œผ๋กœ ๋ฐ›์•„์˜จ๋‹ค.
๋‘๋ฒˆ์งธ๋กœ๋Š” ์ž์‹๋…ธ์˜ ๊ฐ’์„ root.next.val์„ ํ†ตํ•ด์„œ ์–ป์–ด์˜จ๋‹ค. (๋‹จ, root.next๊ฐ€ none์ด ์•„๋‹ ๋•Œ)

๐Ÿ›  ์ฝ”๋“œ


class Solution:
    result = 0
    def longestUnivaluePath(self, root: TreeNode) -> int:
        def dfs(root):
            if not root:
                return None

            left = dfs(root.left)
            right = dfs(root.right)

            if root.left and root.val == root.left.val:
                left += 1
            else:
                left = 0
            if root.right and root.val == root.right.val:
                right += 1
            else:
                right = 0

            self.result = max(self.result, left + right)
            return max(left, right)
        dfs(root)
        return self.result

๐Ÿ“ ์ •๋ฆฌ


ํด๋ž˜์Šค ๋ณ€์ˆ˜ result๋ฅผ ์‚ฌ์šฉํ•ด ๊ฐ’์ด ์žฌํ• ๋‹น ๋˜์ง€ ์•Š๋„๋ก ํ–ˆ๋‹ค.
result ๋ณ€์ˆ˜์— ๊ณ„์†ํ•ด์„œ ์ตœ๋Œ“๊ฐ’์„ ๊ฐฑ์‹ ํ•˜๋„๋ก ํ•œ๋‹ค.

๐ŸŽˆ ์ฐธ๊ณ 


Book ๋งํฌ

profile
Go Go

0๊ฐœ์˜ ๋Œ“๊ธ€