Difference between sums of odd level and even level nodes in an N-ary Tree
Given an N-ary Tree rooted at 1, the task is to find the difference between the sum of nodes at the odd level and the sum of nodes at even level.
/ | \
2 3 -5
/ \ / \
-1 3 -2 6
Sum of nodes at even levels = 2 + 3 + (-5) = 0
Sum of nodes at odd levels = 4 + (-1) + 3 + (-2) + 6 = 10
Hence, the required difference is 10.
/ | \
2 -1 3
/ \ \
4 5 8
/ / | \
2 6 12 7
Approach: To solve the problem, the idea is to find the respective sums of the nodes at the even and odd levels using Level Order Traversal and calculate the difference between them. Follow the steps below to solve the problem:
- Initialize a Queue to store nodes and their respective levels.
- Initialize variables evenSum and oddSum to store the sum of nodes at the even and odd levels respectively.
- Push the root of the N-ary Tree along with its corresponding level, i.e., 1, into the Queue.
- Now, iterate and repeat the following steps until the Queue becomes empty:
- Pop the nodes from the Queue. Store the level of the popped node in a variable, say currentLevel.
- If currentLevel is even, add the value of the node to evenSum. Otherwise, add to oddSum.
- Push all its children to the Queue and set their respective levels as currentLevel + 1.
- Once the above steps are completed, calculate and print the difference between oddSum and evenSum.
Below is the implementation of the above approach:
Time Complexity: O(N)
Auxiliary Space: O(N)