<aside> 👉🏿 문제 링크
</aside>
<aside> 👉🏿 이진 트리인 root가 주어진다.
이를 반전처리한 루트를 반환하라.
</aside>
Input: root = [4,2,7,1,3,6,9]
Output: [4,7,2,9,6,3,1]
<aside> 👉🏿 두가지 방법으로 해결할 수 있다.
<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)
<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