Leetcode Python - 104. Maximum Depth of Binary Tree

Leetcode #104 - Maximum Depth of Binary Tree

이번에는 특정 챕터별로 문제들을 풀어보겠습니다. depth first search를 집중적으로 풀어보겠습니다.

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

순회를 이용해 풀 수 있습니다.

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

class Solution:
    def maxDepth(self, root: TreeNode) -> int:
        if not root:
            return 0
        res=[]
        self.traverse(root, 0, res)
        return max(res)
        
    def traverse(self, root, path, res):
        if root is None:
            res.append(path)
            return
        self.traverse(root.left, path+1, res)
        self.traverse(root.right, path+1, res)

시간복잡도는 O(n) : traverse 함수를 n 번 호출

공간복잡도는 O(n) : 최악의 경우 n/2 크기의 res 생성


discuss 참고하여 개선

class Solution:
    def maxDepth(self, root):
        if not root:
            return 0

        return 1 + max(self.maxDepth(root.left), self.maxDepth(root.right))

시간복잡도는 O(n) : maxDepth 함수를 n번 호출

공간복잡도는 O(1) : 상수