Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/30: Рейтинг темы: голосов - 30, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 26.01.2010
Сообщений: 36

Дана последовательность чисел. Построить бинарное дерево, содержащее эти числа.

30.01.2010, 06:21. Показов 6157. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дана последовательность чисел. Построить бинарное дерево, содержащее эти числа.
Произвести обход дерева сверху вниз. После выполнения программы очистить память,
занятую древовоидной структурой.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.01.2010, 06:21
Ответы с готовыми решениями:

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

Динамическая структура данных: бинарное дерево, содержащее целые числа
Мне нужно срочно вот такое дело -иожет кто сталкивался или у кого подобные проги были.Пришли те если кто сможет мне исходники или код...

Дана последовательность чисел ai. Построить новую последовательность, содержащую все простые числа исходной последовательности.
procedure TForm1.Button1Click(Sender: TObject); begin ListBox1.Items.Add(Edit1.Text); //Числа вводятся вручную. Edit1.Clear; end; ...

1
 Аватар для Aye Aye
373 / 287 / 97
Регистрация: 17.12.2009
Сообщений: 567
01.02.2010, 19:37
Лучший ответ Сообщение было отмечено Sabrinasever как решение

Решение

Pascal
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
program prg;
uses crt;
type
   ptrnode=^node; {тип - указатель на дерево
   node = record {это узел дерева, он имеет одно поле данных, для поля для ссылок (указателей) на сыновей узла}
        data: integer;
        l,r: ptrnode; {l - левый сын, r - правый сын}
   end;
procedure add(var p: ptrnode; x :integer); {процидура добавления элемента в дерево}
begin
     if p <> nil then begin {такая проверка нужна что бы не обращаться к пустой структуре}
        if x > p^.data then add(p^.r,x); {если вставляемое значние больше отца, то добавить его в правое поддерево}
        if x < p^.data then add(p^.l,x); {если вставляемое значние меньше отца, то добавить его в правое поддерево}
        if x = p^.data then writeln('This element already exist'); {если равно то такой элемнт уже есть, не бобавляем его.}
    end
    else begin {в другом случаи можно создавать структуру для ссылки}
         p:=new(ptrnode); {выделяем память в куче для структуры}
         p^.data:=x; {инициализируем её поля}
         p^.l:=nil;
         p^.r:=nil;
    end;
end;
procedure print(p: ptrnode; n: integer); {поцидура для вывода содержимого дерева на экран}
var i: integer;                                    {n - это сколько табуляцие делать}
begin
     if p <> nil then begin {сначало надо вывести правое поддерево}
        if p^.r <> nil then print(p^.r,n+1); {на одну табуляцию больше}
        for i:=1 to n do write('   '); writeln(p^.data);
        if p^.l <> nil then print(p^.l,n+1); {потом левое поддерево}
     end;
end;
 
procedure del(var p: ptrnode); {удаление дерева, освобождение памяти от дерева}
begin
     if p <> nil then begin
        if p^.r <> nil then del(p^.r); {удалить правое поддерево}
        if p^.l <> nil then del(p^.l); {удалить левое поддерево}
        dispose(p); {удалить сам элемент}
     end;
end;
 
var
   root: ptrnode;
begin
     clrscr;
     root:=nil;
     {сначала довбавим в дерево несколько элементов, можно болше, можно в цикле}
     add(root,4);
     add(root,7);
     add(root,3);
     add(root,6);
     print(root,0); {выведем дерево на экран}
     readln;
     del(root); {удалим дерево, осовбодим память}
end.
Добавлено через 26 минут
обход забыл
Pascal
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
program prg;
uses crt;
type
   ptrnode=^node;
   node = record
        data: integer;
        l,r: ptrnode;
   end;
procedure add(var p: ptrnode; x :integer);
begin
     if p <> nil then begin
        if x > p^.data then add(p^.r,x);
        if x < p^.data then add(p^.l,x);
        if x = p^.data then writeln('This element already exist');
    end
    else begin
         p:=new(ptrnode);
         p^.data:=x;
         p^.l:=nil;
         p^.r:=nil;
    end;
end;
procedure print(p: ptrnode; n: integer);
var i: integer;
begin
     if p <> nil then begin
        if p^.r <> nil then print(p^.r,n+1);
        for i:=1 to n do write('   '); writeln(p^.data);
        if p^.l <> nil then print(p^.l,n+1);
     end;
end;
 
procedure del(var p: ptrnode);
begin
     if p <> nil then begin
        if p^.r <> nil then del(p^.r);
        if p^.l <> nil then del(p^.l);
        dispose(p);
     end;
end;
 
function depth(p: ptrnode): integer; {вычисляет глубину дерева}
var dr,dl: integer;
begin
     if p <> nil then begin
        if (p^.r <> nil) then dr:=depth(p^.r)+1;
        if (p^.l <> nil) then dl:=depth(p^.l)+1;
     end;
     if dr > dl then  depth:=dr else depth:=dl;
end;
 
procedure step(p: ptrnode;lavel,stop: integer); {эта поцидура распечатывает все узлы уровня stop}
begin
     if p <> nil then begin
        if lavel=stop then writeln(p^.data);
        if (p^.r <> nil) then step(p^.r,lavel+1,stop);
        if (p^.l <> nil) then step(p^.l,lavel+1,stop);
     end;
end;
 
var
   root: ptrnode;
   var i: integer;
begin
     clrscr;
     root:=nil;
     add(root,5);
     add(root,2);
     add(root,8);
     add(root,4);
     add(root,1);
     add(root,6);
     add(root,9);
     print(root,0);
     for i:=1 to depth(root) do step(root,1,i);
     readln;
     del(root);
end.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.02.2010, 19:37
Помогаю со студенческими работами здесь

Дана последовательность чисел a1, a2, …, an. Указать наименьшую длину числовой оси, содержащую все эти числа.
Дана последовательность чисел a1, a2, …, an. Указать наименьшую длину числовой оси, содержащую все эти числа.

Дана последовательность чисел a1, a2, ..., an. Указать наименьшую длину числовой оси, содержащую все эти числа
Помогите решить. Дана последовательность чисел a1, a2, ..., an. Указать наименьшую длину числовой оси, содержащую все эти числа

Дана последовательность чисел a1, a2,…, an. Указать наименьшую длину числовой оси, содержащую все эти числа.
Дана последовательность чисел a1, a2,…, an. Указать наименьшую длину числовой оси, содержащую все эти числа. Помогите пожалуйста!!! Очень...

Исправьте ошибку. Дана последовательность из n вещественных чисел. Записать все эти числа в файл. Вывести на экран все
Доброго дня суток, помогите пожалуйста Дана последовательность из n вещественных чисел. Записать все эти числа в файл. Вывести на экран...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru