티스토리 뷰

반응형

문제

https://leetcode.com/problems/count-good-nodes-in-binary-tree/description/

 

LeetCode - The World's Leading Online Programming Learning Platform

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

풀이 코드

  • DFS로 Tree를 순회한다.
  • 각 Node의 값이 순회 경로 상에 있는 Node들의 최댓값보다 크면 최댓값을 변경하고 answer를 1 증가한다.
  • Tree를 모두 순회하면 answer를 return한다.
/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {

    int answer; //good node의 개수를 담을 변수

    public int goodNodes(TreeNode root) {
        answer = 0; //0으로 초기화
        DFS(root, root.val); //root는 항상 good node 이므로, 첫 max값으로 root node의 값을 넣는다.
        return answer;
    }

    private void DFS(TreeNode node, int max) {
        if (node == null) {
            return;
        } else {
            if (node.val >= max) {
                max = node.val;
                answer++;
            }
            DFS(node.left, max);
            DFS(node.right, max);
        }
    }
}
반응형

'코딩테스트 > LeetCode' 카테고리의 다른 글

Symmetric Tree  (0) 2023.10.10
Two Sum IV - Input is a BST  (0) 2023.10.10
Find Elements in a Contaminated Binary Tree  (0) 2023.10.05
Reverse Odd Levels of Binary Tree  (0) 2023.10.04
All Paths From Source to Target  (0) 2023.10.03
반응형