参考链接
- https://leetcode-cn.com/problems/sum-of-nodes-with-even-valued-grandparent/
题目描述
给你一棵二叉树,请你返回满足以下条件的所有节点的值之和:
该节点的祖父节点的值为偶数。(一个节点的祖父节点是指该节点的父节点的父节点。)
如果不存在祖父节点值为偶数的节点,那么返回0。
解题思路
直接遍历整棵树,每次遇到节点值为偶数的节点,对其再单独往下遍历两层,将两层里的节点值求和。
代码
class Solution {
public:
int res = 0;
int sumEvenGrandparent(TreeNode* root) {
traverse(root);
return res;
}
void traverse(TreeNode* root)
{
if (root == NULL)
{
return;
}
if (!(root->val & 1))
{
curSum(root, 0);
}
traverse(root->left);
traverse(root->right);
}
void curSum(TreeNode* root, int depth)
{
if (root == NULL)
{
return;
}
if (depth == 2)
{
res += root->val;
}
curSum(root->left, depth + 1);
curSum(root->right, depth + 1);
}
};