- Trending Categories
- Data Structure
- Networking
- RDBMS
- Operating System
- Java
- iOS
- HTML
- CSS
- Android
- Python
- C Programming
- C++
- C#
- MongoDB
- MySQL
- Javascript
- PHP

- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who

We are given an integer value and a variable x and the task is to construct the binary tree and find the pairs having sum equals to the given value x.

**For Example**

int x = 5, The tree which will be created after inputting the values is given below −

Count of pairs in a binary tree whose sum is equal to a given value x are: 2

we are given with an array of integer values that is used to form a binary tree and we will check whether there is a pair present in a binary tree whose sum equals to the given value x which is 5. So, the pairs formed are (2, 3) and (1, 4).

int x = 8, The tree which will be created after inputting the values is given below −

Count of pairs in a binary tree whose sum is equal to a given value x are: 3

we are given with an array of integer values that is used to form a binary tree and we will check whether there is a pair present in a binary tree whose sum equals to the given value x which is 8. So, the pairs formed are (2, 6), (4, 4) and (5, 3).

**Approach used in the below program is as follows** −

Create a structure of a node that contains the data part and the left and right pointers which will be pointing to the left and right subtree.

Input an integer value and use them to create a binary tree by entering the data to the node through left and right pointers.

Input a value of x which will be used to calculate the pairs having sum value as of x.

Create a boolean function to check whether the sum of pairs is x or not.

Inside the function, check if root is NULL then return False

Check IF root not equals ptr and data of root + data of ptr is equals to x then return True.

Call check function recursively by passing the left pointer of root, ptr and value x and also right pointer of x, ptr and x. Now check whether any of the conditions is returning true then return true.

Else, return false.

Create a function total_pairs to calculate the count of pairs with sum as x

Inside the function, check if ptr is NULL then return 0.

Call the function check by passing root, ptr and x as an argument. IF the function returns true then increment the value of total pairs by 1

Call function total_pairs recursively by passing root, left pointer of ptr, x and total and also pass root, right pointer of ptr, x and total.

Print the result as an integer value stored in a variable total.

#include <bits/stdc++.h> using namespace std; struct tree_node { int data; tree_node *left, *right; }; tree_node* create_node(int data){ tree_node* newNode = (tree_node*)malloc(sizeof(tree_node)); newNode−>data = data; newNode−>left = newNode−>right = NULL; } bool check(tree_node* root, tree_node* ptr, int x){ if(root==NULL){ return false; } if (root != ptr && ((root−>data + ptr−>data) == x)){ return true; } if (check(root−>left, ptr, x) || check(root−>right, ptr, x)){ return true; } return false; } void total_pairs(tree_node* root, tree_node* ptr, int x, int& total){ if(ptr == NULL){ return; } if(check(root, ptr, x) == true){ total++; } total_pairs(root, ptr−>left, x, total); total_pairs(root, ptr−>right, x, total); } int main(){ int x = 5; int total = 0; tree_node* root = create_node(5); root−>left = create_node(2); root−>right = create_node(3); root−>left−>left = create_node(1); root−>left−>right = create_node(4); root−>right−>left = create_node(6); total_pairs(root, root, x, total); total = total / 2; cout<<"Count of pairs in a binary tree whose sum is equal to a given value x are: "<< total; return 0; }

If we run the above code it will generate the following output −

Count of pairs in a binary tree whose sum is equal to a given value x are: 2

- Related Questions & Answers
- Count pairs from two BSTs whose sum is equal to a given value x in C++
- Count pairs from two sorted arrays whose sum is equal to a given value x in C++
- Count pairs from two linked lists whose sum is equal to a given value in C++
- Count quadruples from four sorted arrays whose sum is equal to a given value x in C++
- Count triplets in a sorted doubly linked list whose sum is equal to a given value x in C++
- Count pairs from two linked lists whose product is equal to a given value in C++
- Count pairs in a sorted array whose sum is less than x in C++
- Count numbers whose sum with x is equal to XOR with x in C++
- Count triplets in a sorted doubly linked list whose product is equal to a given value x in C++
- Count subtrees that sum up to a given value x in C++
- Count all triplets whose sum is equal to a perfect cube in C++
- Find a Number X whose sum with its digits is equal to N in C++
- Maximum Primes whose sum is equal to given N in C++
- How to find all pairs of elements in Java array whose sum is equal to a given number?
- Count the nodes whose sum with X is a Fibonacci number in C++

Advertisements