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

деревья

27.05.2011, 13:11. Показов 464. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
помогите пожалуйста кто может! на завтра необходимо сдать задачу... программа работает, не работает лишь одно условие.
вот задание:
Написать программу, которая находит длину пути (число ветвей) от корня до ближайшей вершины со значением е. Если такой вершины нет, то ответ должен быть -1.

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
type 
tree=^ptree; 
ptree=record 
key:integer; 
left:tree;
right:tree;
end; 
 
var
tr:tree;
a,b:integer;
 
function maketree(n:integer;  p:tree):tree;
var
r:tree;
nl,nr:integer;
Begin
if (n = 0) then
    begin
    p:=nil;
    maketree:=p;
    exit;
    end;
nl:=n div 2;
nr:= n - nl - 1;
new(r);
r^.left:=nil;
r^.right:=nil;
 
readln(r^.key);
r^.left:= maketree(nl, r^.left);
r^.right:= maketree(nr, r^.right);
p:=r;
 
maketree:= p;
exit;
end;
 
procedure printtree(root:tree; l:integer);
var
p:tree;
i:integer;
Begin
p:=root;
if (root <> nil) then
    begin
    printtree(p^.right, l+2);
    for i:=0 to l-1 do
    write('** ');
    
    writeln(root^.key);
    printtree(root^.left, l+2);
    end;
end;
 
function lorens(root:tree; n:integer):integer;
var
l,r:integer;
 
Begin
    l:=0;
    r:=0;
if root <> nil then
    begin
    if root^.key = n then
        lorens:=1
    else
        begin
        if root^.left <> nil then
            l:=lorens(root^.left, n);
        if root^.right <> nil then
            r:= lorens(root^.right, n);
        if ((r <> 0) and (l <> 0)) then
            if (r > l) then
            begin
            lorens:= l+1;
            exit;
            end
            else
            begin
            lorens:= r+1;
            exit;
            end;
        if ((l = 0) and (r <> 0)) then
            begin
              lorens:= r+1;
              exit;
            end
        else
            if ((r = 0) and (l <> 0)) then
                begin
                  lorens:= l+1;
                end
    else
       if (r=0) and (l=0) then
          lorens:=-1;
        end;
    end
else
    lorens:= -1;
exit;
 
End;
 
Begin
new(tr);
writeln('enter: ');
readln(a);
tr:= maketree(a, tr);
printtree(tr, 2);
writeln('enter search element: ');
readln(b);
 writeln(lorens(tr, b));
end.
условие Если такой вершины нет, то ответ должен быть -1. не работает. не могли бы вы подсказать что нужно добавить, чтобы она работала? спасибо большое
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.05.2011, 13:11
Ответы с готовыми решениями:

Деревья
Дается неориентированное дерево из n вершин, определим расстояние между двумя вершинами как...

Красно-чёрные деревья
Ввести 10-15 целых чисел и построить из них красно-черное дерево поиска

Динамические объекты. Бинарные деревья
Всем привет. Помогите пофиксить код пожалуйста, чтобы в АБС запустился. Условия задания:...

Бинарные деревья. Нахождение высоты дерева
Добрый день. Помогите пожалуйста с задачами. 1) Используя бинарное дерево поиска,которое должно...

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

Бинарные деревья, глубина (высота) дерева
Есть дерево, состоящее из целых чисел , читаемых из файла. С выводом и нахождением высоты дерева...

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

Описать процедуру EQUAL(T1,T2), проверяющую на равенство 2-3–деревья Т1 и Т2
Может кто сможет написать? Описать процедуру EQUAL(T1,T2), проверяющую на равенство 2-3–деревья Т1...

Деревья принятия решения (Деревья классификации)
Доброго времени суток! Столкнулся с такой проблемой: требуется написать программу на Pascal для...


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

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