Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Обработка строк Если строки состоят из одних и тех же символов, то упорядочить символы A в алфавитном порядке; в остальных случаях продублировать цифры в B. https://www.cyberforum.ru/ cpp-beginners/ thread2442956.html C++ Сформировать матрицу путем чиклического сдвига предыдущей сроки
Даны действительные числа a1, a2,..., an. Получит квадратную матрицу порядка n
C++ Задача Эйлера. Какое самое маленькое число делится нацело на все числа от 1 до 20? Доброе утро! Решал следующую задачу на С++ "2520 - самое маленькое число, которое делится без остатка на все числа от 1 до 10. Какое самое маленькое число делится нацело на все числа от 1 до... https://www.cyberforum.ru/ cpp-beginners/ thread2442944.html C++ Вывести последовательнось в порядке убывания Дана последовательность чисел a1, a2, a3,…,an. Вывести ее на экран в порядке убывания. При этом ответ нужно ввести в текстовый файл https://www.cyberforum.ru/ cpp-beginners/ thread2442916.html
Дерево C++
Написать рекурсивную числовую функцию, подсчитывающую сумму элементов дерева.
C++ Указатель на объект или указатель на метод объекта Здравствуйте! У меня много где случается, что надо классу заводить в заголовке указатель на объект другого класса лишь для того, чтобы потом всего один раз вызвать у него метод. Ладно если такой... https://www.cyberforum.ru/ cpp-beginners/ thread2442900.html
C++ Функция дублирующая в целочисленном массиве элементы равные заданному числу https://www.cyberforum.ru/ cpp-beginners/ thread2442877.html
Описать процедуру DoubleX(A, N, X), дублирующую в целочисленном массиве A размера N элементы, равные целому числу X. Массив A и число N являются входными и выходными параметрами. С помощью этой...
Приближенное вычисление определенных интегралов C++
Дорогие формчане прошу вас помощи!Очень плохо с алгеброй,не понимаю что от меня требуют.Помогите пожалуйста:cry: Очень извиняюсь за данное обращение,но у меня просто нету выхода.Сколько уже ломаю...
C++ Структура "Кинолента", вывести данные про фильмы режиссера Ежи Гофмана https://www.cyberforum.ru/ cpp-beginners/ thread2442849.html
создать текстовый файл с произвольной информацией. Организовать просмотр содержимого файла. Организовать чтение и обработку данных из файла в соответствии с индивидуальным заданием. Сохранить...
C++ Считывание и запись в бинарный файл Запускать через консольку не работает к сожалению но почему ,Нужно считать матрицу из бинарного файла и записать в другой бинарный#include <iostream> #include <cmath> #include <string> #include... https://www.cyberforum.ru/ cpp-beginners/ thread2442842.html
C++ Прокрутка консоли
Пишу в VS с CLR и столкнулся с такой проблемой. Когда в консоли заканчивается место для записи, мне выдает ошибку, что не хватает строк для вывода. Как сделать прокрутку? Код на вывод простенькой...
C++ Односвязный список Нужно реализовать функцию которая будет удалять элементы из списка. Функция ничего не возвращает. Функция принимает указатель на начало списка и номер по счету элемента который нужно удалить . Ниже... https://www.cyberforum.ru/ cpp-beginners/ thread2442830.html
0 / 0 / 0
Регистрация: 25.04.2019
Сообщений: 4
0

Для каждого числа последовательности узнать, входит ли оно в бинарное дерево - C++ - Ответ 13522145

25.04.2019, 09:51. Показов 1218. Ответов 2
Метки (Все метки)

Дана задача: даны две последовательности чисел. Построить бинарное дерево, содержащее числа первой последовательности. Для каждого числа второй последовательности узнать, входит ли оно в дерево. Построил дерево поиска а дальше не могу сделать, я новичок в этом разбираюсь потихоньку буду рад развернутым комментариям и подсказкам писал с помощью методички

DEV++

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
#include<Windows.h>
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<malloc.h>
#include<time.h>
typedef int T; // òèï ýëåìåíòà
#define compLT(a,b) (a < b) 
#define compEQ(a,b) (a == b) 
typedef struct Node_  
{
    T data;  // значение узла  
    Node_ *left;// евый потомок    
    Node_ *right;// правый потомок    
    Node_ *parent;// родитель  
    } Node;
    Node *root = NULL; //корень бинарного дерева поиска
    Node* insertNode(T data); 
    void deleteNode(Node *z); 
    Node* findNode(T data); 
    void printTree(Node *node, int l = 0);
    int main()
    { 
    SetConsoleCP(1251);   
    SetConsoleOutputCP(1251);
    int i, *a, *b, j, maxnum2, maxnum;  
    printf("Введите количество элементов maxnum : ");   
    scanf("%d",&maxnum);   
    printf("\n");
     a = (int*) malloc(sizeof(int)*maxnum);     
     srand(time(NULL)); 
     // ãåíåðàöèÿ ìàññèâà
     for (i = 0; i < maxnum; i++)     
     a[i] = rand() % 100;     
     printf("Вывод сгенерированной последовательности\n");
     for (i = 0; i < maxnum; i++)     
     printf("%d \n\n",a[i]); 
     
    printf("Введите количество элементов maxnum2 : ");   
    scanf("%d",&maxnum2);   
    printf("\n");
     b = (int*) malloc(sizeof(int)*maxnum2);     
     srand(time(NULL)); 
     // ãåíåðàöèÿ ìàññèâà
     for (j = 0; j < maxnum2; j++)     
     b[j] = rand() % 100;     
     printf("Вывод сгенерированной последовательности\n");
     for (j = 0; j < maxnum2; j++)     
     printf("%d \n\n",b[j]);
     // добавление элементов в бинарное дерево поиска
     for (i = 0; i < maxnum; i++)      
     insertNode(a[i]);
     printf("Âûâîä áèíàðíîãî äåðåâà ïîèñêà\n");   
     printTree(root);   
     printf("\n"); 
     
     //поиск всех элементов по бинарному дереву поиска
        for (i = maxnum-1; i >= 0; i--)
        findNode(a[i]);
     
     
     
     //удаление бинарного дерева поиска из памяти
     for (i = 0; i < maxnum; i++)      
     deleteNode(findNode(a[i]));   
     getch(); 
     return 0;
     }
     //функция выделения памяти для нового узла и вставка в дерево* 
     Node* insertNode(T data)
     { 
     Node *x, *current, *parent;   
     current = root;   
     parent = 0; 
     while (current) {
        if ( data == current->data ) return (current);       
         parent = current;       
         current = data < current->data ?        
         current->left : current->right;
          }
     x = (Node*) malloc(sizeof(Node));   
     x->data = data;   
     x->parent = parent;  
     x->left = NULL;   
     x->right = NULL;
     if(parent) 
     if( x->data < parent->data )       
       parent->left = x;
       else    
       parent->right = x;
     else    
     root = x; 
     return(x);
     }
     //функция удаления узла из дерева
     void deleteNode(Node *z) {
        Node *x, *y; 
         if (!z || z == NULL) return; 
         if (z->left == NULL || z->right == NULL)     
         y = z;
         else {     
         y = z->right; 
         while (y->left != NULL) y = y->left;
         } if (y->left != NULL)     
            x = y->left;
         else    
            x = y->right;
         if (x) x->parent = y->parent; 
         if (y->parent) 
         if (y == y->parent->left)       
            y->parent->left = x;
         else     
            y->parent->right = x;
            else    
            root = x; 
            if (y != z) {     
            y->left = z->left; 
            if (y->left) y->left->parent = y;       
            y->right = z->right; 
            if (y->right) y->right->parent = y;       
            y->parent = z->parent; 
            if (z->parent) 
            if (z == z->parent->left)         
            z->parent->left = y; 
            else        
            z->parent->right = y; 
            else      
            root = y;       
            free (z);
            }  
            else {
                free (y);   
                }
            } 
        //функция поиска узла, содержащего data
        Node* findNode(T data) {   
         Node *current = root; 
         while(current != NULL)
         if(compEQ(data, current->data)) 
         return (current);
         else      
           current = compLT(data, current->data) ?                  
           current->left : current->right; 
           return(0);
           }
        //функция вывода бинарного дерева поиска
        void printTree(Node *node, int l){
            int i; 
            if (node != NULL) {
                printTree(node->right, l+1); 
                for (i=0; i < l; i++)
                printf("    ");     
                printf ("%4ld", node->data);     
                printTree(node->left, l+1);
                } 
                else printf("\n"); 
    }


Вернуться к обсуждению:
Для каждого числа последовательности узнать, входит ли оно в бинарное дерево C++
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.04.2019, 09:51
Готовые ответы и решения:

Для чего предназначено бинарное дерево, что оно делает?
народ подскажите пожалуйста для чего предназначено бинарное дерево? что оно делает? (надо делать...

Для каждого слова первого предложения определить, входит ли оно во второе предложение
Здравствуйте. Я нуб в программировании, только начинаю осваивать. Помогите пожалуйста составить...

Для каждого слова из первого предложения определить, входит ли оно во второе предложение
Даны два предложения. Для каждого слова первого предложения ( в том числе для повторяющихся в этом...

Для каждого слова первого предложения определить, входит ли оно во второе предложение
даны два предложения. Для каждого слова первого предложения (в том числе для повторяющихся в этом...

2
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.04.2019, 09:51

Для каждого слова первого предложения определить, входит ли оно во второе предложение
Здравствуйте, помогите пожалуйста! Задача: Даны два предложения. Для каждого слова первого...

Строки. Для каждого слова первого предложения определить, входит ли оно во второе
даны 2 предложения.для каждого слова первого предложения(в том числе для повторяющихся...

Для каждого слова первого предложения определить, входит ли оно во второе предложение
Помогите решить!Даны два предложения. Для каждого слова первого предложения (в том чис-ле для...

Для каждого слова первого предложения определить, входит ли оно во второе предложение
Решить задачу в консольном режиме : Даны 2 предложения. Для каждого слова первого предложения...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.