Untitled
unknown
plain_text
2 years ago
895 B
11
Indexable
pair<int,int> predecessorSuccessor(BinaryTreeNode<int>* root, int key)
{
BinaryTreeNode<int>* tmp=root;
int succ=-1;
int pred=-1;
while(tmp!=NULL){ //null check
if(tmp->data==key){ //now check childs
BinaryTreeNode<int>* lefttree=tmp->left;
BinaryTreeNode<int>* righttree=tmp->right;
while(lefttree!=NULL){
pred=lefttree->data;
lefttree=lefttree->right;
}
while(righttree!=NULL){
succ=righttree->data;
righttree=righttree->left;
}
break;
}else if(tmp->data >key){ //find node with key
succ=tmp->data;
tmp=tmp->left;
}else{
pred=tmp->data;
tmp=tmp->right;
}
}
pair<int,int> ans;
ans.first=pred;
ans.second=succ;
return ans;
}
Editor is loading...