[Binary Tree - DFS, Medium] Count Good Nodes in Binary Tree

송재호·2025년 3월 28일
0

https://leetcode.com/problems/count-good-nodes-in-binary-tree/description/?envType=study-plan-v2&envId=leetcode-75

Good node를 찾기 위해서는 dfs 탐색과정에 현재까지의 max값을 가지고 다녀야 한다.

max는 순회 시마다 Math.max(max, next value)로 갱신해준다.
node.val값이 갱신한 값보다 크거나 같으면 해당 노드 값이 가장 크다고 볼 수 있으므로 이것은 Good node다.

단순히 good node 수를 찾는 문제이므로 따로 sum 변수를 스코프 밖으로 빼서 집계할 수 있도록 했다.

class Solution {
    public int sum = 0;
    public int goodNodes(TreeNode root) {
        dfs(root, root.val);
        return sum;
    }

    public void dfs(TreeNode node, int max) {
        if (node == null) {
            return;
        }

        if (node.val >= max) {
            sum++;
        }

        if (node.left != null) {
            dfs(node.left, Math.max(max, node.left.val));
        }
        if (node.right != null) {
            dfs(node.right, Math.max(max, node.right.val));
        }
    }
}
profile
식지 않는 감자

0개의 댓글