Sum of Nodes with Even-Valued Grandparent
给一个二叉树, 求爷爷是偶数的孙子node的值的和. 这个就是记录爷爷的val就可以.
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public int sumEvenGrandparent(TreeNode root) {
return find(root, null, null);
}
private int find(TreeNode r, TreeNode p, TreeNode pp) {
if(r == null) //如果当前node是null, 就结束
return 0;
if(p == null) // 如果爸爸是null, 则下一步是让当前的node变成爸爸, 这时候还没有爷爷
return find(r.left, r, null) + find(r.right, r, null);
if(pp == null) // 如果爷爷是null, 继续搜索, 因为没爷爷自然不会有偶数
return find(r.left, r, p) + find(r.right, r, p);
if(pp.val % 2 == 0) // 如果有爷爷, 而且是偶数, 加起来
return find(r.left, r, p) + find(r.right, r, p) + r.val;
else// 如果有爷爷, 但是是技术, 和null没区别, 继续搜索
return find(r.left, r, p) + find(r.right, r, p);
}
}