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

Дерево,прямой обход,кол-во ярусов.

10.12.2009, 14:44. Показов 2389. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задание
Составить программу, которая:
Запрашивает ввод строго бинарного дерева (содержит 2n-1 узлов, где n количество листьев дерева) с клавиатуры при использовании прямого обхода и выводит количество ярусов в дереве.

что то набросала, но есть ошибки, не могу понять в чем.

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
type
 TNext=^tree;  {указатель на дерево}
 tree=record   {запись дерева}
  count:integer; информация в дереве числа
  left:TNext;   левое поддерево
  right:TNext;  правое поддерево
 end;
 
procedure fill (n,a:integer; var root:TNext);   процедура заполнения дерева 
 var p:TNext;               n-кол-во эл-ов, root-корень дерева
 Begin
  If (a<=ln(n)/ln(2)) then  сравниваем число с лог 5 по основанию 2
   If (root^.left=nil) then проверяем пусто ли левое поддерево
    begin
     new(p);    создаем указатель
     p^.count:=a;   записываем в корент число
     p^.left:=nil;  левое поддерево делам пустым
     p^.right:=nil; правое поддерево делаем пустым
     root^.left:=p; новый указатель на корень
    end
   else fill(n,a,root^.left)     вызывам рекурсивно процедуру
  else
   If (root^.right=nil) then    проверяем пусто ли правое поддерево и делам все                             аналогично
    begin
     new(p);
     p^.count:=a;
     p^.left:=nil;
     p^.right:=nil;
     root^.right:=p;
    end
   else fill(n,a,root^.right);
 End;
 
procedure pre(p:TNext);     процедура прямого обхода где к это ярусы
var k,k1:integer;
 Begin
  If p^.left<>nil then begin k:=k+1; pre(p^.left); end;
  If p^.right<>nil then begin k1:=k1+1; pre(p^.right); end;
 writeln(k,k1);
 End;
 
const n=5;  предположительное кол-во эл-ов
var M array[1..n] of integer;   задаем все переменные
    top:TNext;i:integer;
 
Begin
 Writeln('write elements'); 
 For i:=1 to n do   пользователь вводит числа записывающиеся в массив
  read(M[i]);
 
 top^.left=nil;     правое и левое поддеревья делаем пустыми
 top^.right=nil;
 
 For i:=1 to n do   проходим по массиву 
  fill(n,M[i],top); процедура заполнения дерева
 
 pre(top);  делаем обход
 Readln
End.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.12.2009, 14:44
Ответы с готовыми решениями:

Дерево, обход в ширину
Добрый вечер, знатоки. Решил сделать дерево, но вот не могу разобраться с обходом в ширину. Из идей, добавлять элементы в очередь и из нее...

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

Выдайте количество акробатов в нижнем ряду и общее количество акробатов в пирамиде, если она имеет N ярусов
2.Акробаты выстраиваются в живую пирамиду следующим образом: на верхнем ярусе 1 акробат, на втором – 3, на третьем – 5 и т.д., на каждом...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.12.2009, 14:44
Помогаю со студенческими работами здесь

Бинарное дерево (обход, удаление и вставка)
Помогите сделать вывод, не понимаю, как оно должно работать. Условие: С помощью указателей построить бинарное дерево поиска. Обойти его...

Бинарное дерево. Обход бинарного дерева (симметрический, прямой и обратный)
Привет всем! Мне надо в курсовой работе написать программу, которая строит бинарное дерево (по вводимым значениям) и потом обходит это...

Разница между понятиями "Обход в прямом направлении" и "Итерационный прямой обход"
Ребятаа, обьясните чем различается: Обход в прямом направлении и Итерационный прямой обход Добавлено через 10 минут НароооД,...

Прямой обход идеально-сбалансированного дерева
Не могу найти глупую ошибку в логике. По заданию нужно прямым обходом по идеальносбалансированному дереву пройтись и вывести. Вот...

Нерекурсивный прямой обход BST дерева
Дайте пожалуйста пример реализации НЕрекурсивного прямого обхода дерева


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
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 и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru