Description
https://leetcode.com/problems/sum-of-nodes-with-even-valued-grandparent/
Given a binary tree, return the sum of values of nodes with even-valued grandparent. (A grandparent of a node is the parent of its parent, if it exists.)
If there are no nodes with an even-valued grandparent, return 0
.
Example 1:
Input: root = [6,7,8,2,7,1,3,9,null,1,4,null,null,null,5] Output: 18 Explanation: The red nodes are the nodes with even-value grandparent while the blue nodes are the even-value grandparents.
Constraints:
- The number of nodes in the tree is between
1
and10^4
. - The value of nodes is between
1
and100
.
Explanation
Traverse the tree to find all the nodes with even values. From those even value nodes, find their grandchildren values and add them to the sum of the global variable.
Python Solution
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def sumEvenGrandparent(self, root: TreeNode) -> int:
self.even_sum = 0
self.helper(root, add_sum=False)
return self.even_sum
def helper(self, root, add_sum=False):
if not root:
return
if add_sum:
self.even_sum += root.val
return
if root.val % 2 == 0:
if root.left:
self.helper(root.left.left, add_sum=True)
self.helper(root.left.right, add_sum=True)
if root.right:
self.helper(root.right.left, add_sum=True)
self.helper(root.right.right, add_sum=True)
self.helper(root.left, add_sum=False)
self.helper(root.right, add_sum=False)
- Time Complexity: O(N).
- Space Complexity: O(N).