[LeetCode] Easy | Average of Levels in Binary Tree Python

콩이·2024년 11월 19일
0

코딩테스트 Python

목록 보기
12/13

📍 문제 설명

이진 트리의 root가 주어지면, 각 레벨의 노드 평균 값을 배열 형태로 반환합니다. 실제 답의 10510^-5 까지만 답이 허용됩니다.

📍 예시

  • 예시 1

    • Input

      root = [3,9,20,null,null,15,7]

    • Output

      [3.00000,14.50000,11.00000]

  • 예시 2

  • Input

    root = [3,9,20,15,7]

  • Output

    [3.00000,14.50000,11.00000]

📍 풀이 point

🔓 Try1 🔓

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def averageOfLevels(self, root: Optional[TreeNode]) -> List[float]:
        queue = deque([root])
        result = []

        while queue:
            level_len = len(queue)
            level_value = []

            for i in range(level_len):
                node = queue.popleft()
                level_value.append(node.val)

                if node.left:
                    queue.append(node.left)
                
                if node.right:
                    queue.append(node.right)
                
            result.append(sum(level_value)/len(level_value))
                
        return result
  1. 각 레벨에서의 노드 값을 왼-오 순서로 level_value 리스트에 담아준다(level_value는 레벨 값이 바뀌면 초기화).

  2. 각 레벨의 값이 level_value 리스트에 담기면 평균을 구해준다.

    처음에 sum 함수처럼 avg 함수도 내장되어 있다고 생각하고 avg(level_value)를 했는데 오류가 났다.

    avg 함수는 내장함수가 아니기 때문이었다. 평균은 다음과 같이 직접 식을 사용하여 구해줘야한다.

   sum(level_value)/len(level_value)

0개의 댓글