Krononberg

1448. Count Good Nodes in Binary Tree.cpp 본문

개발 로그/알고리즘

1448. Count Good Nodes in Binary Tree.cpp

k._. 2021. 10. 19. 11:34

이제 트리구조 포인팅이 어떻게 되는지 스스로 생각 가능해진다.

 

 

🔑 각 recursion의 max값을 저장하여, 현재 노드 val과 비교한다. 그리고 노드val >=max이면, res++.

주의. max값은 각 recursion에 속해야 한다. (global로 max값을 설정하면 안됨!)

 

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */
class Solution {
public:
    
    int res =0;

    void preorder(TreeNode*root,int max){
        if(root==nullptr) return;
        
        if(root->val >= max){
            max = root->val;
            res++;
        }

        preorder(root->left,max);
        preorder(root->right,max);
        return;
    }
    
    int goodNodes(TreeNode* root) {
        preorder(root,INT_MIN);
        return res;
    }
};