Leetcode Python - 225. Invert Binary Tree

Leetcode #226 - Invert Binary Tree

이제 blind 75 leetcode를 풀어보겠습니다. https://leetcode.com/discuss/interview-question/460599/Blind-75-LeetCode-Questions

리트코드의 문제 226 ‘Invert Binary Tree’을 파이썬으로 풀어 보도록 하겠습니다.

포인트는 post-order로 traversal 하면서 left와 right을 바꾸어주는 것입니다.

전체 코드는 아래와 같습니다.

class Solution:
    def invertTree(self, root: Optional[TreeNode]) -> Optional[TreeNode]:
        if not root:
            return root
        
        head = root
        stack = [root]
        
        while stack:
            node = stack.pop()
            
            if not node:
                continue
                
            tmp = node.left
            node.left = node.right
            node.right = tmp
            
            stack.append(node.left)
            stack.append(node.right)
        
        return head

시간복잡도는

  • O(n) : 모든 노드 한번씩 방문

공간복잡도는

  • O(1) : 상수