반응형
난이도 - Medium
Intuition
이 문제는 dfs로 풀 수 있다. dfs로 현재 값들의 총합과, 총 노드의 개수를 반환하면 된다.
Code
# 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 averageOfSubtree(self, root: TreeNode) -> int:
ans = 0
def dfs(node):
if not node:
return (0, 0)
nonlocal ans
left_sum, left_num_nodes = dfs(node.left)
right_sum, right_num_nodes = dfs(node.right)
total_val = node.val + left_sum + right_sum
num_nodes = left_num_nodes + right_num_nodes + 1
avg_val = total_val // num_nodes
if node.val == avg_val:
ans += 1
return (total_val, num_nodes)
dfs(root)
return ans
Complexity
Time Complexity: O(n) n개의 노드를 방문한다.
Space Complexity: O(n) dfs의 recursive때문에 n개의 공간이 필요하다.
반응형
'코딩 알고리즘 문제 > Leetcode' 카테고리의 다른 글
| 20. Valid Parentheses (String, Stack) (0) | 2025.10.21 |
|---|---|
| 19. Remove Nth Node From End of List (Linked List, Two Pointers) (0) | 2025.10.21 |
| 921. Minimum Add to Make Parentheses Valid (String, Stack, Greedy) (0) | 2025.10.21 |
| 647. Palindromic Substrings (Two Pointers, String, Dynamic Programming) (0) | 2025.10.21 |
| 636. Exclusive Time of Functions (Array, Stack) (0) | 2025.10.21 |