Sum of Nodes with Even-Valued Grandparent
给一个二叉树, 求爷爷是偶数的孙子node的值的和. 这个就是记录爷爷的val就可以.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
/** * 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); } } |