# Definition for a binary tree node. class TreeNode: def __init__(self, x): self.val = x self.left = None self.right = None class Solution: def sumEvenGrandparent(self, root): if root is None: return 0 return self.sumEG(root, False, False) def sumEG(self, tree, grandParentEven, parentEven): sum = 0 if tree is None: return sum if grandParentEven: sum += tree.val sum += self.sumEG(tree.left, parentEven, tree.val % 2 == 0) sum += self.sumEG(tree.right, parentEven, tree.val % 2 == 0) return sum s = Solution() print("Expected: 18") tree = TreeNode(6) a = TreeNode(7) b = TreeNode(2) c = TreeNode(7) d = TreeNode(8) e = TreeNode(9) f = TreeNode(1) g = TreeNode(4) h = TreeNode(1) i = TreeNode(3) j = TreeNode(5) i.right = j d.right = i d.left = h tree.right = d c.right = g c.left = f a.right = c b.left = e a.left = b tree.left = a print("Got:", s.sumEvenGrandparent(tree))