using namespace std;
#include <iostream>
#include <clocale>
#include <cstdlib>
#include <iomanip>
#include <string>
#include <ctime>
void massinit(int* mass, int masssizeM, int masssizeN) {
for (int i = 0; i < masssizeM * masssizeN; i++) {
mass[i] = rand() % 90 + 10;
}
}
void massout(int* mass, int masssizeM, int masssizeN) {
for (int i = 0; i < masssizeM; i++) {
for (int j = i * masssizeN; j < (i + 1) * masssizeN; j++) {
cout << setw(3) << mass[j] << " ";
}
cout << endl;
}
cout << endl << endl;
}
int twodimcount(int* mass, int masssizeM, int masssizeN) {
int returnval = 0;
for (int i = 0; i < masssizeM; i++) {
int avgvalue = 0;
for (int j = i * masssizeN; j < (i + 1) * masssizeN; j++) {
avgvalue += mass[j];
}
returnval += avgvalue;
avgvalue /= masssizeN;
for (int j = i * masssizeN; j < (i + 1) * masssizeN; j++) {
mass[j] += avgvalue;
}
}
cout << "Новый массив:" << endl;
massout(mass, masssizeM, masssizeN);
return returnval;
}
int main() {
setlocale(LC_ALL, "rus");
system("chcp 1251");
srand(time(0));
int M = rand() % 8 + 2;
int N = rand() % 8 + 2;
int a = 0;
int* mainmass = new int[M * N];
massinit(mainmass, M, N);
cout << "Изначальный массив:" << endl;
massout(mainmass, M, N);
a = twodimcount(mainmass, M, N);
cout << "Сумма средних значений строк новой матрицы: " << a << endl;
delete[] mainmass;
system("pause");
return 0;
}
До сих пор мы рассматривали структуры данных, данные в которых располагаются линейно. В связном списке — от первого узла к единственному последнему. В динамическом массиве — в виде непрерывного блока.
В этой части мы рассмотрим совершенно новую структуру данных — дерево. А точнее, двоичное (бинарное) дерево поиска (binary search tree). Бинарное дерево поиска имеет структуру дерева, но элементы в нем расположены по определенным правилам.
Также смотрите другие материалы этой серии: стеки и очереди, динамический массив, связный список, оценка сложности алгоритма, сортировка и множества.
Для начала мы рассмотрим обычное дерево.
Деревья
Дерево — это структура, в которой у каждого узла может быть ноль или более подузлов — «детей». Например, дерево может выглядеть так:

Структура организации
Это дерево показывает структуру компании. Узлы представляют людей или подразделения, линии — связи и отношения. Дерево — это самый эффективный представления и хранения такой информации.