Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- struct node{
- int data;
- node* l;
- node* r;
- };
- typedef node n;
- n* createnode(int data){
- n* newnode=new n;
- newnode->data=data;
- newnode->l=NULL;
- newnode->r=NULL;
- return newnode;
- }
- void search(n* head,int data){
- vector<int> v,z;
- n* curr=head,*p;
- bool check=0;
- while(curr!=NULL){
- p=curr;
- v.push_back(curr->data);
- if(data>=curr->data){
- curr=curr->r;
- }else
- curr=curr->l;
- }
- z=v;
- while(v.back()!=data){
- v.pop_back();
- if(v.empty()) break;
- }
- if(!v.empty()){
- for(auto x:v){
- printf("%d ",x);
- }
- }
- else{
- for(auto x:z){
- printf("%d ",x);
- }
- printf("0");
- }
- cout << "\n";
- return;
- }
- n* insert(n* head,int data){
- n* newnode=createnode(data);
- if(head==NULL) return newnode;
- n* curr=head,*p;
- while(curr!=NULL){
- p=curr;
- if(data>=curr->data){
- curr=curr->r;
- }else
- curr=curr->l;
- }
- if(p->data<=data){
- p->r=newnode;
- }else
- p->l=newnode;
- return head;
- }
- int main(){
- n* head=NULL,*curr;
- int n,data;
- scanf("%d",&n);
- for(int i=0;i<n;i++){
- scanf("%d",&data);
- head=insert(head,data);
- }
- int m;
- scanf("%d",&m);
- for(int i=0;i<m;i++){
- scanf("%d",&data);
- curr=head;
- search(curr,data);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement