For this Question: Given two binary trees, your task is to check if their exist a pair of nodes one from each tree such that their sum is equal to a specified target.<b>User Task:</b>
Since this will be a functional problem, you don't have to take input. You just have to complete the function <b>pairsum()</b> that takes root nodes of both trees and the target value as parameters.

Constraints:
1 < = Nodes < = 10000
1 < = Node.data < = 10000
1 < = target < = 20000Return true if their exist a pair of nodes one from each tree such that their sum is equal to a specified target else return false.Sample Input:-
  1       5
 / \       \
2   3       6

target = 8

Sample Output:-
1

Explanation:
take 2 from first tree and 6 from second tree.
sum = 2 + 6 = 8 = target  , I have written this Solution Code: 
 int m[20001];
void solve(struct Node* root){
m[root->data]++;
if(root->left!=NULL){
    solve(root->left);
}
if(root->right!=NULL){
    solve(root->right);
}
}
bool check(struct Node* root,int target){
if((target-root->data)>0 && m[target-root->data]>0){return true;}
bool ch1=false,ch2=false;
if(root->left!=NULL){
    ch1=check(root->left,target);
}
if(root->right!=NULL){
    ch2=check(root->right,target);
}
if(ch1 || ch2){return true;}
return false;

}
bool pairsum(struct Node* root1, struct Node* root2, int target){
solve(root1);
return check(root2,target);
}
, In this Programming Language: C, Now tell me if this Code is compilable or not?