728x90
반응형
1315. Sum of Nodes with Even-Valued Grandparent
문제
이진 트리(Binary Tree)가 주어지면, grandparent가 짝수인 노드의 합을 구하는 문제이다.
풀이
이진 트리는 TreeNode structure로 구현되어 있다. 각 노드별로 left와 right를 가리키는 포인터를 가지고 있다. 따라서, root 노드부터 훑으면서, 각 노드가 짝수라면 해당 노드의 grandchild의 합을 구하면 된다.
/**
* 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 answer = 0;
int sumEvenGrandparent(TreeNode* root) {
if(root == nullptr)
return 0;
if(root->val % 2 == 0) {
if(root->left != nullptr) {
if(root->left->left != nullptr)
answer += root->left->left->val;
if(root->left->right != nullptr)
answer += root->left->right->val;
}
if(root->right != nullptr) {
if(root->right->left != nullptr)
answer += root->right->left->val;
if(root->right->right != nullptr)
answer += root->right->right->val;
}
}
sumEvenGrandparent(root->left);
sumEvenGrandparent(root->right);
return answer;
}
};
- 현재 노드가 비어있는지 확인합니다.
- 노드가 비어있다면 해당 함수는 반환됩니다.
- 현재 노드의 값이 짝수인지 확인합니다.
- 짝수라면 해당 노드의 grandchild 유무를 확인한 후, grandchild를 answer에 더합니다.
- 현재 노드에 대한 작업이 완료되면, 현 노드의 왼쪽, 오른쪽 child로 넘어가서 위 작업을 반복합니다.
728x90
반응형