Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 1
Регистрация: 22.05.2013
Сообщений: 120
1

Поиск в ширину. Его реализация

20.10.2015, 19:58. Показов 508. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
В общем. Дана программа. К ней нужно реализовать доп. функцию - поиск в ширину (по уровням).
Искал по данной теме, но ничего не нашел((
Помогите, пожалуйста.
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
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
uses crt,GraphABC;
const a:array [1..10] of integer = (7, 5, 9, 3, 1, 10, 6, 8, 4, 2);
type
PTree = ^ TTree;   //указатель на узел дерева
TTree = record     //узел дерева
        data: integer;  //номер дерева
        left, right: pTree; //листья дерева
end;
 
var pRoot:pTree;
    for_menu,x,num:integer;
 
//======= Процедура вставки нового элемента в дерево
Procedure Add_Tree(data_n:integer;Var pRoot:pTree);
begin
   if pRoot=nil then   //если пустое дерево, то создаем 1 корень и 2 листа
        begin
          New(pRoot);
          pRoot^.data:=data_n;
          pRoot^.left:=nil;
          pRoot^.right:=nil;
        end
  else if data_n < pRoot^.data then   //если значение корня больше нового значения
          Add_Tree(data_n,pRoot^.left)   //то к дереву прикрепляется левый лист
       else
          Add_Tree(data_n,pRoot^.right);  // иначе к дереву прикрепляется правый лист
end;
 
//================== Процедура печати дерева
Procedure Print_Tree(pRoot:pTree;n:integer);
var i:integer;
begin
   if pRoot <> nil then  //если дерево не пустое
      begin
         for i:=1 to n do
            write('=');
         writeln(pRoot^.data);
         Print_Tree(pRoot^.left,n+1);
         Print_Tree(pRoot^.right,n+1);
      end; end;
 
//========== Процедура очистки дерева
Procedure Clear_Tree(var pRoot:pTree);
begin
  if pRoot <> nil then    //если дерево не пустое
      begin
         Clear_Tree(pRoot^.left);  //то удаляется левый лист
         Clear_Tree(pRoot^.right);  //удаляется правый лист
         dispose(pRoot);         //удаляется узел или корень
      end; end;
 
//========== Процедура поиска элемента дерева
Procedure Search(data_n:integer;pRoot:pTree);
begin
  if pRoot=nil then writeln('Элемент не найден!')
  else if pRoot^.data=data_n then writeln('Элемент найден!')
       else if data_n < pRoot^.data then
          Search(data_n,pRoot^.left)
       else
          Search(data_n,pRoot^.right); end;
 
//====== Процедура для меню
Procedure menu(num:integer);
var i:integer;
begin
  case num of
    0: CloseWindow;  // Выход
 
    1: begin      // Построение
        for i:=1 to 10 do
          Add_Tree(a[i],pRoot);
          writeln;
        writeln('Дерево построено!');
      end;
 
    2: begin        // Вставка
    writeln;
         write('Введите число: ');
         readln(x);
         Add_Tree(x,pRoot);
      end;
 
    3: begin        //Печать
    writeln;
    writeln('Дерево имеет вид:');
    writeln;
        if pRoot<>nil then Print_Tree(pRoot,0)
        else writeln('Дерево пустое!');
      end;
 
    4: begin         // Поиск
         writeln;
         write('Введите число: ');
         readln(x);
         Search(x,pRoot);
      end;
 
    5: begin       // Очистка
         Clear_Tree(pRoot);
         writeln;
         writeln('Дерево очищено!');
      end; end; end;
//===== Тело программы
begin
  pRoot:=nil;
  writeln('Меню программы:');
  num:=1;
  while num<>5 do
    begin
      writeln;
      Writeln('0 - Выход');
      Writeln('1 - Добавить дерево');
      Writeln('2 - Вставить');
      Writeln('3 - Написать дерево');
      Writeln('4 - Поиск');
      Writeln('5 - Очистка дерева');
      writeln;
      Write('Ваш выбор: ');
      Readln(for_menu);
      menu(for_menu);
  end;
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.10.2015, 19:58
Ответы с готовыми решениями:

Составление кубиков, поиск в пространстве состояний, монотонный поиск в ширину [Turbo Prolog]
Помогите решить задачу с кубиками в турбо прологе с несложной визуализацией. Имеется...

Реализация обхода графа в ширину
Здравствуйте, помогите пожалуйста перевести словесное описание на программный код

Графы: поиск в ширину, поиск вершины с максимальной степенью
Дан граф. Способ представления и метод обхода равен список смежности;поиск в ширину....

Реализация процедуры поиска в ширину в графах
помогите пожалуйста написать программу на тему:реализация процедуры поиска в ширину в графах

0
20.10.2015, 19:58
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.10.2015, 19:58
Помогаю со студенческими работами здесь

Реализация алгоритма A star и Поиска в ширину
Реализовать алгоритмы A star и Поиска в ширину для графа у которого 26 вершин. Помогите пожалуйста...

Реализация заполнения бинарного дерева в ширину
Добрый день, есть такая задача Алгоритм нашел: Попытался написать код, но не пойму как в итоге...

Реализация обхода в ширину и глубину бинарного дерева
Как реализовать обход дерева (глубины три, т.е. трех уровневое) в глубину и ширину и что под этим...

Поиск в глубину, поиск в ширину, дерево
Добрый день. Есть задача с бидонами (есть три бидона : 1ый 14 литров -заполнен молоком, 2ой 9...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru