<aside> 👉🏿 문제 링크

</aside>

문제 정리

<aside> 👉🏿 이진 트리인 root가 주어진다.

이를 반전처리한 루트를 반환하라.

</aside>

예제

Input: root = [4,2,7,1,3,6,9]
Output: [4,7,2,9,6,3,1]

Untitled

접근방법

<aside> 👉🏿 두가지 방법으로 해결할 수 있다.

  1. 재귀처리를 통한 dfs방식
  2. queue를 이용한 bfs방식 </aside>

(1) 재귀처리를 통한 dfs방식

<aside> 👉🏿 굉장히 간단하게 구현할 수 있다. dfs 방식으로 내려가면서 오른쪽 노드와 왼쪽 노드를 재귀적으로 교체해주면 된다.

</aside>

def invertTree(self, root: Optional[TreeNode]) -> Optional[TreeNode]:
        if root is None :
            return None

        def invert(parent):
            if parent :
                parent.left, parent.right = invert(parent.right), invert(parent.left)
                return parent

        return invert(root)

(2) queue를 이용한 bfs방식

<aside> 👉🏿 queue를 이용해서 노드의 왼쪽과 오른쪽을 교체해준다.

</aside>

class Solution:
    def invertTree(self, root: Optional[TreeNode]) -> Optional[TreeNode]:

        queue = collections.deque([root])
        while queue :
            node = queue.popleft()
            if node :
                node.left, node.right = node.right, node.left
                queue.append(node.left)
                queue.append(node.right)
        return root