0 / 0 / 0
Регистрация: 13.05.2012
Сообщений: 6
1

Работа с деревьями.

13.05.2012, 12:12. Показов 718. Ответов 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
program Trees;
 
type
   PTernaryNode = ^TTernaryNode;
    TTernaryNode = record
    data: integer;
   cleft : PTernaryNode;
    clright : PTernaryNode;
 end;
Procedure vvodtree (n: integer; var t: PTernaryNode);
begin
if t=nil then
            begin
              new(t);
            with t^ do
             begin
              cleft:=nil;
              clright:=nil;
              data:=n;
             end;
            end
  else
  if n<=t^.data then
                      vvodtree (n, t^.cleft)
 
                   else
                       vvodtree (n, t^.clright);
 
end;
 
procedure vivodtree (t:PTernaryNode);
begin
if t<> nil then
              begin
                    vivodtree (t^.cleft);
                    write (t^.data:3);
                    vivodtree (t^.clright);
              end;
 
end;
 
Function balansirovlev (t:PTernaryNode):integer;
begin
if t=nil then
              result:=0
          else result:=1+balansirovlev(t^.cleft);
end;
 
Function balnsirprav (t:PTernaryNode):integer;
begin
if t=nil then
              result:=0
          else result:=1+ balnsirprav(t^.clright);
end;
 
Function balnsir (t:PTernaryNode):integer;
begin
if t=nil then
              result:=0
          else result:=1+ balnsir(t^.clright)+balnsir(t^.cleft);
end;
 
var A,B: PTernaryNode;
chis: integer;
visotalev, visotaprav, ob: integer;
begin
 a:=nil;
 read (chis);
 while chis <> 0 do
  begin
  vvodtree (chis,a);
  read (chis);
  end;
  vivodtree (a);
   visotalev:=balansirovlev(a);
   writeln ();
   writeln(visotalev);
   visotaprav:=balnsirprav(a);
   writeln (visotaprav);
   ob:=balnsir (a);
   writeln (ob);
 end.
В итоге всего вершин мне показывает к примеру 9, но с лева находится 2 с права 5, то бишь появляется вопрос, кто меня обманывает, функция считающая все вершины или функции считающие вершины правой и левой ветки??
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.05.2012, 12:12
Ответы с готовыми решениями:

Работа с деревьями
RECORD * tree(int k) { RECORD *newnode; int nl,nr;//левое и правое поддерево if(k&lt;=0)...

Работа с деревьями
Здравствуйте, помогите пожалуйста. 1. Описать функцию которая: a) печатает узлы непустого дерева...

Работа с деревьями
Здравствуйте! Можете подсказать класс, с помощью которого можно работать с деревьями?

Работа с xml деревьями
есть строка в виде xml, интересует как взять из дерева объектов родителя и всех его потомков, в...

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

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

Работа с бинарными деревьями
помогите написать прогу: для произвольного дерева вывести все вершины выше заданного уровня,...

Работа с Б-деревьями - расщепление страницы
Я понятия не имею что такое Б-деревья и в Интернете толком ничего путного нет а мне надо сделать...

Работа с деревьями, нужно доработать код
Пожалуйста Задание: Поменять местами максимальное и минимальное значение в дереве вот максимально...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

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