Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- struct node {
- string value; // поле данных
- struct node* left; // левый потомок
- struct node* right; // правый потомок
- };
- struct node* add(string x, node* tree) {
- if (tree == NULL) { // Если дерева нет, то формируем корень
- tree = new node; // память под узел
- tree->value = x; // поле данных
- tree->left = NULL;
- tree->right = NULL; // ветви инициализируем пустотой
- }
- else if (x < tree->value) // условие добавление левого потомка
- tree->left = add(x, tree->left);
- else // условие добавление правого потомка
- tree->right = add(x, tree->right);
- return(tree);
- }
- void preorder(node* tree, string&s)
- {
- if (tree != NULL) { //Пока не встретится пустой узел
- s=s+" " + (tree->value); //Записываем корень дерева
- preorder(tree->left, s); //Рекурсивная функция для левого поддерева
- preorder(tree->right, s); //Рекурсивная функция для правого поддерева
- }
- }
- void postorder(node* tree, string&s)
- {
- if (tree != NULL) { //Пока не встретится пустой узел
- postorder(tree->left, s); //Рекурсивная функция для левого поддерева
- postorder(tree->right, s); //Рекурсивная функция для правого поддерева
- s = s + " " + (tree->value); //Записываем корень дерева
- }
- }
- int height(node*tree) {// корень тоже считаем
- if (!tree) return 0;
- return 1 + max(height(tree->left), height(tree->right));
- }
- int count(node* tree)
- {
- if (!tree) return 0;
- return 1 + count(tree->left) + count(tree->right);
- }
- bool is_search(node* tree, string min, string max) {//min вначале это самое левое значение, а max - самое правое
- if (!tree) return true;
- if ((min <= tree->value) && (tree->value <= max))
- return (is_search(tree->left, min, tree->value) && is_search(tree->right, tree->value, max));
- return false;
- }
- string tree_min(node* tree, string s)
- {
- if (!tree) return s;
- else
- {
- s = tree->value;
- return tmin(tree->left, s);
- }
- }
- string tree_max(node* tree, string s)
- {
- if (!tree) return s;
- else
- {
- s = tree->value;
- return tmax(tree->right, s);
- }
- }
- в main:
- для 7.1
- node* root;
- root = NULL;
- string x ="1";
- while (x != "stop")
- {
- cin >> x;
- root = add(x, root);
- }
- string s = "";
- task7_1(root,s);
- cout << s;
- для 7.2
- node* root;
- root = NULL;
- string x ="1";
- while (x != "stop")
- {
- cin >> x;
- root = add(x, root);
- }
- string s = "";
- task7_1(root,s);
- cout << s;
- для 7.3
- node* root;
- root = NULL;
- string x ="1";
- while (x != "stop")
- {
- cin >> x;
- root = add(x, root);
- }
- cout <<task7_3(root);
- для 7.4
- node* root;
- root = NULL;
- string x ="1";
- while (x != "stop")
- {
- cin >> x;
- root = add(x, root);
- }
- cout <<task7_4(root);
- для 7.5
- node* root;
- root = NULL;
- string x ="1";
- while (x != "stop")
- {
- cin >> x;
- root = add(x, root);
- }
- string max = tree_max(root, ""), min=tree_min(root,"");
- cout <<task7_5(root, max, min);
Add Comment
Please, Sign In to add comment