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

Бинарное дерево на Паскале.

05.11.2009, 16:17. Показов 15449. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста реализовать дерево
____A
__B___C
______D
____E___F
__G_H__L_K

1) посредством массивов;
2) списков сыновей;
3) левых сыновей и правых братьев;
4) левых и правых сыновей.
И потом составить программу для заданной реализации АТД «дерева». В программе необходимо реализовать оператор MAKENULL (делает дерево пустым).


Буду очень благодарна!!! ))
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.11.2009, 16:17
Ответы с готовыми решениями:

бинарное дерево
как сделать бинарное дерево???

Бинарное дерево
Привет, соседи! Столкнулся со следующей задачей: Написать программу, которая создает бинарное дерево, состоящее из целых чисел,...

Бинарное дерево
кто нибудь!!!!!!!!!!! помогите!!!!! мне нужно к зачету сдать задачу, а как с нею бороться не знаю: Написать программу, которая...

4
 Аватар для Dnnn
1063 / 130 / 34
Регистрация: 09.10.2009
Сообщений: 271
05.11.2009, 18:20
вижу, никто не отвечает, поэтому спрошу у автора.
а теорию Вам какую-нибудь объясняли? непонятно, по какому принципу дерево строилось (если конечно А, В, С, Д - это именно значения элементов, символьные).
просто нас например учили - если есть бинарное дерево с известным корнем (первым элементом), то строится оно дальше по правилу - если добавляемый эл-т меньше корня - добавляем его влево ("левый сын"), если больше - вправо ("правый сын"). а тут А в корне, а В почему-то слева - правило построения другие?
и далее тоже хорошо б на примерах пояснить, что за "дерево левых сыновей и правых братьев" и все остальные пункты.
0
 Аватар для AC13
7 / 7 / 0
Регистрация: 13.09.2009
Сообщений: 263
05.11.2009, 18:39  [ТС]
Тут корень А, В - левый сын А, С - правый.
D - сын С и все остальные сыновья D.
В и С братья. E и F - братья, G, H, L и K тоже братья.

Реализация «дерева» посредством массивов:
Pascal
1
2
3
Type
tree=array[1..n] of integer;
var A:tree;
Реализация деревьев с использованием списков сыно-вей:
Pascal
1
2
3
4
5
6
Type
Tree=array[1..n] of ^ptree;
ptree=record
element:integer;
next: рtree;
end;
Реализация деревьев через левых сыновей и правых братьев:
Pascal
1
2
3
4
5
6
Type
Tree=array[1..n] of record
left_son:integer;
element:integer;
right_brother:integer;
End;
Больше в данной нам теории толком ничего нет, её не объясеяют - самоизучение.
Я так поняла, что нужно по каждой из реализаций написать программу, используя данное дерево.
И потом отдельная программа этого же дерева с оператором MAKENULL.

Dnnn, спасибо Вам, что ответили и уже неоднократно мне помогаете
0
 Аватар для Dnnn
1063 / 130 / 34
Регистрация: 09.10.2009
Сообщений: 271
06.11.2009, 10:03
честно говоря, ничего не прояснилось... пишу на всякий случай процедуры для бинарного дерева с указателем на левого и правого сына, может для п. 4 пригодится
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
program B_Tree;
type PTree = ^ TTree; {Tip- ukazatel na element dereva}
       TTree = record el: integer; {tip el-ta dereva}
                            left, right: PTree; {ukazateli na lev i prav.sina}
                   end;
var  Tree {ukaz. na koren dereva}: PTree;
      i,j,el,n: integer; {n - kol-vo el-tov dereva}
 {-------------------------------------------------------------------}
 {dobavlenie v derevo }
 procedure AddInTree(el: integer; var tree:PTree);
 var p, pr, t: PTree;
 begin new(t); t^.el := el; {sozdaem novii el-t dereva}
       t^.left := nil; t^.right := nil; {nov.el-t bydet listom dereva}
       p:= tree; pr:=nil;
       {ishem mesto privjazki }
       while p<>nil do
       begin pr := p; {"predidushii" ukazatel}
               if p^.el > el then p:=P^.left
               else p:=p^.right;
       end;
       if tree = nil then tree := t {pervii uzel dereva}
       else if pr^.el>el then pr^.left := t
             else pr^.right := t;
 end;
 {--------------------------------------------------------------------}
 { Prjamoi obxod (pechat) dereva - uzel, levoe podderevo, pravoe podderevo}
 procedure PrintTree(tree: PTree);
 begin write(tree^.el, ' ');
       if tree^.left<>nil then PrintTree(tree^.left);
       if tree^.right<>nil then PrintTree(tree^.right);
 end;
 {------------------------------------------------------------------------}
 {Udalenie dereva}
 procedure ClearTree(var p:Ptree);
 begin if p^.left <> nil then ClearTree(p^.left);
       if p^.right <>nil then ClearTree(p^.right);
       dispose(p); p:=nil;
 end;
 
begin
  write('Vvedite kol-vo el-tov dereva: '); readln(n);
  tree := nil;
  for i:=1 to n do
  begin
    write(i,' element dereva = ');
    readln(el);
    AddInTree(el, tree);
  end;
 
  if tree = nil then writeln('Derevo pusto!')
  else
  begin writeln('Obxod dereva:');
        PrintTree(tree);
        ClearTree(tree); {ochistka pamjati}
  end;
  readln;
end.
1
 Аватар для AC13
7 / 7 / 0
Регистрация: 13.09.2009
Сообщений: 263
06.11.2009, 13:10  [ТС]
СПАСИБО ))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.11.2009, 13:10
Помогаю со студенческими работами здесь

Бинарное дерево
Отобразить с помощью бинарного дерева предложение: &quot;Боженко Роксолана изучает программирование&quot;. Ключи подобрать самостоятельно....

Бинарное дерево
Создать простое бинарное дерево с именем, кто сможет помоч?

Сохранить бинарное дерево в файл
Подскажите, пожалуйста, как сохранить бинарное дерево в файл? Суть задачи: необходимо создать бинарное дерего, добавить к нему листы,...

вывести бинарное дерево на экран
у меня задание 1 построить дерево двоичного поиска, вывести его на экран любым способом (графически, вложенными скобками или отступами); ...

Бинарное дерево поиска (вывод на экран)
Бинарное дерево поиска (вывод на экран) Помогите, не могу вывести нормально дерево на экран, выводится только в немногих случаях, в...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
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-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru