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);
    }
}