Given a binary search tree, and an integer X, the task is to check if there exists a pair of distinct nodes in BST with sum equal to X. If yes then print Yes else print No.
Input: X = 5 5 / \ 3 7 / \ / \ 2 4 6 8 Output: Yes 2 + 3 = 5. Thus, the answer is "Yes" Input: X = 10 1 \ 2 \ 3 \ 4 \ 5 Output: No
Approach: We have already discussed a hash based approach in this article. The space complexity of this is O(N) where N is the number of nodes in BST.
In this article, we will solve the same problem using a space efficient method by reducing the space complexity to O(H) where H is the height of BST. For that, we will use two pointer technique on BST. Thus, we will maintain a forward and a backward iterator that will iterate the BST in the order of in-order and reverse in-order traversal respectively. Following are the steps to solve the problem:
- Create a forward and backward iterator for BST. Let’s say the value of nodes they are pointing at are v1 and v2.
- Now at each step,
- If v1 + v2 = X, we found a pair.
- If v1 + v2 < x, we will make forward iterator point to the next element.
- If v1 + v2 > x, we will make backward iterator point to the previous element.
- If we find no such pair, answer will be “No”.
Below is the implementation of the above approach:
- Find a pair with given sum in BST
- Find a pair with given sum in a Balanced BST
- Pair with minimum absolute difference | BST
- Longest path between any pair of vertices
- Find pairs with given sum such that pair elements lie in different BSTs
- Number of pair of positions in matrix which are not accessible
- Find the shortest distance between any pair of two different good nodes
- Find the number of pair of Ideal nodes in a given tree
- Pair with minimum absolute difference after solving each query
- Number of distinct pair of edges such that it partitions both trees into same subsets of nodes
- Find if there is a pair in root to a leaf path with sum equals to root's data
- Find the path from root to the given nodes of a tree for multiple queries
- Extended Binary Tree
- Find maximum count of duplicate nodes in a Binary Search Tree
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.