[LeetCode] 226. Invert Binary Tree

Sungwoo·2024년 10월 23일
0

Algorithm

목록 보기
2/43
post-thumbnail

📕문제

LeetCode 226. Invert Binary Tree

문제 설명

주어진 이진트리를 좌우반전시키는 문제다.


📝풀이

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def invertTree(self, root: Optional[TreeNode]) -> Optional[TreeNode]:
        self.invertTreeRecursion(root)
        return root

    def invertTreeRecursion(self, root: [TreeNode]):
            if root is None:
                return
            tmp = root.left
            root.left = root.right
            root.right = tmp
            self.invertTreeRecursion(root.left)
            self.invertTreeRecursion(root.right)
  • 해당 노드가 자식을 가지지 않을 때까지 재귀적으로 left값, right값을 바꾼다.

코드 리팩토링

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def invertTree(self, root: Optional[TreeNode]) -> Optional[TreeNode]:
        if root is None:
            return None
        root.left, root.right = self.invertTree(root.right), self.invertTree(root.left)
        return root
  • invertTree 함수 자체를 재귀함수로 활용하여 코드를 깔끔하게 만들었다.

0개의 댓글