-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTwo_Sum_BST.cpp
More file actions
34 lines (34 loc) · 984 Bytes
/
Two_Sum_BST.cpp
File metadata and controls
34 lines (34 loc) · 984 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
class Solution{
public:
vector<int> inorderTraversal(TreeNode* A);
bool isTwoSum(TreeNode* A, TreeNode* B, int k){
vector<int> inord1 = inorderTraversal(A), inord2 = inorderTraversal(B);
int i=0; j = inord2.size()-1;
while(i<inord1.size() && j>=0){
int curr_sum = inord1[i] + inord2[j];
if(curr_sum == k)
return true;
else if(curr_sum<k)
i++;
else
j--;
}
return false;
}
};
vector<int> Solution::inorderTraversal(TreeNode* A) {
stack<TreeNode*> inorder;
TreeNode* curr = A;
vector<int> res;
while(curr || !inorder.empty()){
while(curr){
inorder.push(curr);
curr = curr->left;
}
curr = inorder.top();
inorder.pop();
res.push_back(curr->val);
curr = curr->right;
}
return res;
}