This code is having a Runtime error. Please explain why.
This has O(n+m) time and O(h1+h2) space complexity.
vector<int> merge(Node *r1, Node *r2)
{
//Your code here
stack<Node*> st1,st2;
vector<int> v;
while(r1){
st1.push(r1);
r1 = r1->left;
}
while(r2){
st2.push(r2);
r2 = r2->left;
}
while(!st1.empty() && !st2.empty()){
if(st1.top()->data < st2.top()->data){
if(!st1.empty()){Node* top = st1.top();
st1.pop();
v.push_back(top->data);
if(top->right){
st1.push(top->right);
while(top->left){
st1.push(top->left);
}
}}
}else{
if(!st2.empty()){Node* top = st2.top();
st2.pop();
v.push_back(top->data);
if(top->right){
st2.push(top->right);
while(top->left){
st2.push(top->left);
}
}}
}
}
return v;
}

