이진 트리의 root가 주어지면, 각 레벨의 노드 평균 값을 배열 형태로 반환합니다. 실제 답의 까지만 답이 허용됩니다.
예시 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]
# 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
각 레벨에서의 노드 값을 왼-오 순서로 level_value
리스트에 담아준다(level_value
는 레벨 값이 바뀌면 초기화).
각 레벨의 값이 level_value
리스트에 담기면 평균을 구해준다.
처음에 sum
함수처럼 avg
함수도 내장되어 있다고 생각하고 avg(level_value)
를 했는데 오류가 났다.
avg
함수는 내장함수가 아니기 때문이었다. 평균은 다음과 같이 직접 식을 사용하여 구해줘야한다.
sum(level_value)/len(level_value)