Pagini recente » Cod sursa (job #2842520) | Cod sursa (job #263) | Cod sursa (job #2881552) | Cod sursa (job #2792044) | Cod sursa (job #1540079)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("hashuri.in");
ofstream fout("hashuri.out");
struct Nod{
int key;
Nod* st;
Nod* dr;
Nod(Nod* st, Nod* dr, int key) {
this->st = st;
this->dr = dr;
this->key = key;
}
};
Nod* nil;
Nod* adauga(Nod* n, const int key) {
if(n == nil) {
n = new Nod(nil, nil, key);
return n;
}
if(n->key > key)
n->st = adauga(n->st, key);
else
n->dr = adauga(n->dr, key);
return n;
}
Nod* sterge(Nod* n, const int key) {
if(n == nil)
return n;
if(n->key == key) {
if(n->st == nil || n->dr == nil) {
Nod* ret = (n->st == nil) ? n->dr : n->st;
delete n;
return ret;
} else {
Nod* ret = n->dr;
for( ; ret->st != nil ; ret = ret->st ) ;
n->key = ret->key;
n->dr = sterge(n->dr, ret->key);
return n;
}
}
if(n->key > key)
n->st = sterge(n->st, key);
else
n->dr = sterge(n->dr, key);
return n;
}
int interogare(Nod* n, const int key) {
if(n == nil)
return 0;
if(n->key == key)
return 1;
if(n->key > key)
return interogare(n->st, key);
else
return interogare(n->dr, key);
//return 0;
}
int main() {
nil = new Nod(NULL, NULL, 0);
Nod* root = nil;
int type; int x;int N;
fin >> N;
while(N--) {
fin >> type >> x;
switch(type) {
case 1: root = adauga(root, x); break;
case 2: root = sterge(root, x); break;
case 3: fout << interogare(root, x) << '\n'; break;
}
}
return 0;
}