1315. Sum of Nodes with Even-Valued Grandparent(C语言)
题目
Given the root of a binary tree, return the sum of values of nodes with an even-valued grandparent. If there are no nodes with an even-valued grandparent, return 0.
A grandparent of a node is the parent of its parent if it exists.
Example 1:
Input: root = [6,7,8,2,7,1,3,9,null,1,4,null,null,null,5]
Output: 18
Explanation: The red nodes are the nodes with even-value grandparent while the blue nodes are the even-value grandparents.
Example 2:
Input: root = [1]
Output: 0
Constraints:
The number of nodes in the tree is in the range [1, 104].
1 <= Node.val <= 100
解答
递归遍历
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
int sum;
void Tra(struct TreeNode* root)
{
if(root == NULL)
return ;
if(root->val % 2 == 0)
{
if(root->left != NULL)
{
if(root->left->left != NULL)
sum += root->left->left->val;
if(root->left->right != NULL)
sum += root->left->right->val;
}
if(root->right != NULL)
{
if(root->right->left != NULL)
sum += root->right->left->val;
if(root->right->right != NULL)
sum += root->right->right->val;
}
}
Tra(root->left);
Tra(root->right);
}
int sumEvenGrandparent(struct TreeNode* root){
sum = 0;
Tra(root);
return sum;
}
总结
完全按照这个套路:
void Tra(struct TreeNode* root ,int *num, int *all_value)
{
if(root == NULL)
{
...
}
...(往下传递时做的操作)
Tra(root->left, ...);
Tra(root->right, ...);
...(往上回传时做的操作)
}