Leetcode Python - 110. Balanced Binary Tree

Leetcode #110 - Balanced Binary Tree

이제 두 번째로 100 문제들을 풀어보겠습니다. 리트코드의 문제 110 ‘Balanced Binary Tree’을 파이썬으로 풀어 보도록 하겠습니다.

discuss 참고 포인트는 이진트리에서 postorder traversal을 이용하는 것입니다.

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

class Solution(object):
    def isBalanced(self, root):
            
        def check(root):
            if root is None:
                return 0
            left  = check(root.left)
            right = check(root.right)
            if left == -1 or right == -1 or abs(left - right) > 1:
                return -1
            return 1 + max(left, right)
            
        return check(root) != -1

시간복잡도는

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

공간복잡도는

  • O(v) : v(이진트리의 높이) 최악의 경우 O(n) : 비대칭 이진트리 케이스