Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define _CRT_SECURE_NO_WARNINGS
- #include <stdio.h>
- #include <stdlib.h>
- #include <queue>
- using namespace std;
- struct btree
- {
- char elem;
- btree * left, *right;
- };
- btree * build_tree(FILE * in) {
- char sym;
- btree *d;
- fscanf(in,"%c", &sym);
- switch (sym) {
- case '(':
- { d = new btree;
- fscanf(in,"%c", &sym);
- d->elem = sym;
- d->left = build_tree(in);
- d->right = build_tree(in);
- fscanf(in,"%c", &sym);
- return d;
- }
- case '0':
- return NULL;
- case ',':
- d = build_tree(in);
- return d;
- default:
- return build_tree(in);
- }
- }
- void del_el(btree * t)
- {
- if (t->left) {
- del_el(t->left);
- delete t->left;
- }
- if (t->right)
- {
- del_el(t->right);
- delete t->right;
- }
- }
- void printt(btree * f)
- {
- btree * d = f;
- queue<btree*> Q;
- if (d != NULL)
- {
- Q.push(d);
- do
- {
- d = Q.front();
- printf("%c\n", d->elem);
- if (d->left != NULL)
- Q.push(d->left);
- if (d->right != NULL)
- Q.push(d->right);
- Q.pop();
- } while (!Q.empty());
- }
- }
- int find_print(btree * f, char E)
- {
- if (f->elem == E)
- return 2;
- btree * d = f;
- int mark = 0;
- int answer = 0;
- queue<btree*> Q;
- if (d != NULL)
- { Q.push(d);
- do
- {
- d = Q.front();
- if (d->left)
- if (d->left->elem == E)
- {
- mark = -1;
- answer = 1;
- }
- else
- Q.push(d->left);
- if (d->right)
- if (d->right->elem == E)
- {
- mark = 1;
- answer = 1;
- }
- else
- Q.push(d->right);
- Q.pop();
- } while (!Q.empty()&&!answer);
- if (mark == 1)
- {
- del_el(d->right);
- delete d->right;
- d->right = NULL;
- }
- if (mark = -1)
- {
- del_el(d->left);
- delete d->left;
- d->left = NULL;
- }
- }
- return answer;
- }
- int main()
- {
- FILE * in = fopen("input.txt", "r");
- btree * T = build_tree(in);
- system("pause");
- system("cls");
- char E;
- printf("ENTER ELEM\n");
- scanf("%c", &E);
- printt(T);
- int answer = find_print(T,E);
- if (answer == 2)
- {
- del_el(T);
- delete T;
- T = NULL;
- }
- printt(T);
- system("pause");
- fclose(in);
- return 404;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement