LeetCode 1315. Sum of Nodes with Even-Valued Grandparent

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 and 10^4.
  • The value of nodes is between 1 and 100.

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).

Leave a Reply

Your email address will not be published. Required fields are marked *