Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- ifstream fin("abce.in");
- ofstream fout("abce.out");
- struct Tree {
- int info;
- Tree *parent, *left, *right;
- };
- Tree *tree;
- void Insert(Tree **l, int x, Tree *parent) {
- Tree *p;
- if(*l == NULL) {
- p = new Tree;
- p -> info = x;
- p -> left = p -> right = nullptr;
- p -> parent = parent;
- *l = p;
- return;
- }
- if(x < (*l) -> info)
- Insert(&((*l) -> left), x, *l);
- else
- Insert(&((*l) -> right), x, *l);
- }
- Tree *Search(Tree *l, int x) {
- if(l == nullptr)
- return nullptr;
- if(l -> info == x)
- return l;
- if(x < l -> info)
- return Search(l -> left, x);
- else
- return Search(l -> right, x);
- }
- Tree *Minimum(Tree *T) {
- Tree *Min;
- if(T == nullptr)
- return nullptr;
- Min = T;
- while (Min -> left != nullptr)
- Min = Min -> left;
- return Min;
- }
- Tree *Maximum(Tree *T) {
- Tree *Max;
- if(T == nullptr)
- return nullptr;
- Max = T;
- while(Max -> right != nullptr)
- Max = Max -> right;
- return Max;
- }
- void InOrder_traversal(Tree *l) {
- if(l != nullptr) {
- InOrder_traversal(l -> left);
- fout << l -> info << ' ';
- InOrder_traversal(l -> right);
- }
- }
- void PreOrder_traversal(Tree *l) {
- if(l != nullptr) {
- fout << l -> info << ' ';
- PreOrder_traversal(l -> left);
- PreOrder_traversal(l -> right);
- }
- }
- void PostOrder_traversal(Tree *l) {
- if(l != nullptr) {
- PostOrder_traversal(l -> left);
- PostOrder_traversal(l -> right);
- fout << l -> info << ' ';
- }
- }
- int main () {
- int Q;
- fin >> Q;
- while(Q--) {
- int type, x;
- fin >> type >> x;
- if(type == 1)
- Insert(&tree, x, nullptr);
- if(type == 2) {
- Tree *node = Search(tree, x);
- if(node != nullptr)
- Erase(&tree, node);
- }
- if(type == 3) {
- Tree *node = Search(tree, x);
- if(node != nullptr)
- fout << "1\n";
- else
- fout << "0\n";
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment