Input: 2 / \ 1 6 / \ 5 7 / 3 \ 4 sum = 8 Output: 1 7 2 6 3 5 Input: 2 / \ 1 3 \ 4 sum = 5 Output: 1 4 2 3
Approach: Traverse the tree in pre-order manner from both the side, left and right and store the values of left and right side into the ArrayList LeftList and RightList respectively. On reaching the leaf node, take out the left side last value and right side last value from the respective ArrayLists. There will be three conditions:
- left side value + right side value < sum: Delete the last value of LeftList and make the left side execution to the right side because on moving from left side to the right side in the tree the value of node increases.
- left side value + right side value > sum: Delete the last value of RightList and make the right side execution to the left side because on moving from right side to the left side in the tree the value of node decreases.
- left side value + right side value = sum: Delete the last value of both the lists and make the left side execution to right side and right side execution to the left side.
Below is the implementation of the above approach:
1 7 2 6 3 5
- Find the maximum cost of an array of pairs choosing at most K pairs
- Find number of pairs in an array such that their XOR is 0
- Find number of pairs (x, y) in an array such that x^y > y^x
- Find the number of distinct pairs of vertices which have a distance of exactly k in a tree
- Pairs with Difference less than K
- Number of pairs whose sum is a power of 2
- Pairs such that one is a power multiple of other
- Maximizing Unique Pairs from two arrays
- Sorting Vector of Pairs in C++ | Set 1 (Sort by first and second)
- Count pairs from two sorted matrices with given sum
- Pairs involved in Balanced Parentheses
- Count pairs in an array that hold i*arr[i] > j*arr[j]
- Sum of Manhattan distances between all pairs of points
- No of pairs (a[j] >= a[i]) with k numbers in range (a[i], a[j]) that are divisible by x
- Count all pairs of adjacent nodes whose XOR is an odd number
If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to firstname.lastname@example.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.
Improved By : princiraj1992