解题思路
该节点的父节点的父节点是偶数,则sum=sum+该节点,
这道题的思路可以等价为该节点为偶数,并且子节点的子节点存在,
则sum=sum+该节点的子节点的子节点。
相关代码
/*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val = val; }* TreeNode(int val, TreeNode left, TreeNode right) {* this.val = val;* this.left = left;* this.right = right;* }* }*/
class Solution {public int sumEvenGrandparent(TreeNode root) {/**sum=0;这道题的意思就是该节点的值为偶数,并且子节点的子节点,即temp存在,那么可以sum=sum+temp*/Queue<TreeNode> queue = new LinkedList<>();if(root==null) return 0;queue.add(root);int sum=0;while(queue.isEmpty()==false){int len = queue.size();for(int i=0;i<len;i++){TreeNode node = queue.poll();if(node.left!=null) queue.add(node.left);if(node.right!=null) queue.add(node.right);if(node.val%2==0&&node.left!=null&&node.left.left!=null){sum = sum + node.left.left.val;}if(node.val%2==0&&node.left!=null&&node.left.right!=null){sum = sum + node.left.right.val;}if(node.val%2==0&&node.right!=null&&node.right.left!=null){sum = sum + node.right.left.val;}if(node.val%2==0&&node.right!=null&&node.right.right!=null){sum = sum + node.right.right.val;}}}return sum;}
}