AverageOfLevelsInBinaryTree

Published at 2022-11-15

# 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]:
        res = []
        q = [root]
        temp_q = []
        sums, cnt = 0, 0
        
        while q:
            while q:
                node = q.pop()
                if not node: continue

                sums += node.val
                cnt += 1

                temp_q.append(node.left)
                temp_q.append(node.right)

            if sums != 0:  # division error 방지
                res.append(sums/cnt)
            else:
                if cnt != 0:  # 숫자는 더했지만 합계가 0이라 위에서 패쓰되는 애들 위해
                    res.append(sums/cnt)
                
            q = temp_q[:]
            
            # 초기화
            temp_q = []
            sums, cnt = 0, 0
            
        
        return res