Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.71/14: Рейтинг темы: голосов - 14, средняя оценка - 4.71
 Аватар для Vzik
32 / 28 / 7
Регистрация: 05.05.2009
Сообщений: 58

Двоичное дерево! Не могу дорешать...

12.05.2009, 12:05. Показов 2746. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Эта задача формирует двоичное дерево, выводит его на экран и находит максимальную глубину дерева. Оно выводит его в строчку, а мне надо по уровням! Прошу напишите как доделать...сама понять не могу(если можно с объяснением)! Надеюсь кто-нибудь поможет мне разобраться!!!

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
Uses Crt;
Type Tr=^tt; tt=Record
           Data:integer;
           Left,Right:Tr;
           end;
Var
   x:integer;
   kd,f :Tr;
 {zapolnenee} 
Procedure dob (n :integer; var h:Tr);
Begin 
  If h = nil then begin
                  New(h);
                  With h^ do
                       begin
                       Data:=n;
                       Left:=nil;
                       Right:=nil;
                       end;
                  end
             else if n<= h^.Data then dob(n,h^.left)
                                 else dob(n,h^.right);
 End;
{vevod na ekran} 
Procedure Print(var t:Tr);
Begin
  If t<>nil then
             with t^ do begin
                        Print(left);
                        write (data,'  ');
                        Print(right);
                        end;
 End;
{ obxod dereva} 
Function dep(g:tr) :integer; 
var r,l :integer;
begin
if g<>nil
          then begin
              l:=dep(g^.left);{obxod levogo poddereva}
              r:=dep(g^.right);{obxod pravogo poddereva}
              if l>r then dep:=l+1
                     else dep:=r+1;
              end
          else dep:=0;
end;
 Begin
  ClrScr;
 writeln('vvod vershin; okonchanie - 0');
 kd:=nil;
 f:=nil;
 read (x);
 while x<>0 do
            begin
            dob(x,kd);
            writeln('ocherednoe chislo');
            read (x);
            end;
 f:=kd;
 Print(kd);
 writeln;
 writeln;
 writeln (dep(kd));
 readln;
 Readln;
end.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.05.2009, 12:05
Ответы с готовыми решениями:

Двоичное дерево (дерево Хаффмана)
Я постараюсь наиболее подробно изложить суть своей проблемы, надеюсь, что получится. Итак, я хочу написать дерево Хаффмана, для этого...

не могу дорешать
На краю круглой платформы радиусом R = 2,35 м лежит шайба. Платформа вращается так, что путь, проходимый шайбой, растет в соответствии с...

Не могу дорешать
Пример: xy''-y'=x^2e^x получилось y=int.x^2e^x/2 + C1e^x как интеграл решить

20
2923 / 844 / 324
Регистрация: 30.04.2009
Сообщений: 2,633
12.05.2009, 12:39
как звучит условие задачи?
тебе надо сделать это графически?
0
 Аватар для Vzik
32 / 28 / 7
Регистрация: 05.05.2009
Сообщений: 58
12.05.2009, 12:47  [ТС]
Задача: Сформировать двоичное дерево, вывести его на экран и найти максимальную глубину дерева.
Моя задача выводит в строчку дерево...а преподаватель сказал, чтоб я сделача вывод по уровням!
0
2923 / 844 / 324
Регистрация: 30.04.2009
Сообщений: 2,633
12.05.2009, 12:52
я раньше делал подобную задачу, у меня вверху экрана был первый уровень который изображался круглишком от него отходило две ветви на концах которых были тоже круглешки и так далее, тебе надо что то типа этого?
0
 Аватар для Vzik
32 / 28 / 7
Регистрация: 05.05.2009
Сообщений: 58
12.05.2009, 12:57  [ТС]
ДА Только вместо круглишков чтоб были вводимые цыфры! А как это сделать я не знаю!
.... 5
4
.... 6 Что-то типа такого!
0
2923 / 844 / 324
Регистрация: 30.04.2009
Сообщений: 2,633
12.05.2009, 13:04
a если сделать так
........................................ ...........1
..................................2..... ............................2
........................3..............3 .....................3.............3
..................4.........4......4.... ..4............4.......4......4.....4
0
 Аватар для Vzik
32 / 28 / 7
Регистрация: 05.05.2009
Сообщений: 58
12.05.2009, 13:43  [ТС]
Ну и так можно! А ты сможешь потом объяснить мне, чтоб я поняла!!!
0
2923 / 844 / 324
Регистрация: 30.04.2009
Сообщений: 2,633
12.05.2009, 13:50
да я бы с радостью но дело в том что у меня ставилась задача чуть подругому , для заданного уровня вложенности нарисовать дерево
0
 Аватар для Vzik
32 / 28 / 7
Регистрация: 05.05.2009
Сообщений: 58
12.05.2009, 13:53  [ТС]
И что ты никак не сможешь мне помочь???? Мда...что же теперь делать не представляю!!!
0
2923 / 844 / 324
Регистрация: 30.04.2009
Сообщений: 2,633
12.05.2009, 13:56
почему решить то ее можно только надо подумать, не долго
0
 Аватар для Vzik
32 / 28 / 7
Регистрация: 05.05.2009
Сообщений: 58
12.05.2009, 14:02  [ТС]
Подумай пожалуйста, последняя надежда на тебя...буду очень благодарна!!!
0
2923 / 844 / 324
Регистрация: 30.04.2009
Сообщений: 2,633
12.05.2009, 14:10
пришли мне пожалуйста результат своей программы , то есть как она выводит
0
 Аватар для Vzik
32 / 28 / 7
Регистрация: 05.05.2009
Сообщений: 58
12.05.2009, 14:13  [ТС]
А как это сделать? Она просто выводит числа в строчку вот так
25478.....
а в низу максимальный элемент!
0
2923 / 844 / 324
Регистрация: 30.04.2009
Сообщений: 2,633
12.05.2009, 14:26
если у тебя сразу можно узнать каков максимальный элемент то можно все просто сделать , у тебя можно сразу узнать максимальный элемент?
0
 Аватар для Vzik
32 / 28 / 7
Регистрация: 05.05.2009
Сообщений: 58
12.05.2009, 14:38  [ТС]
Да сразу считает и выводит до него дерево! Я вот тоже сижу и думаю...просто как-нибудь сделать разное кол-во пробелов перед каждой выводимой цифрой!
0
2923 / 844 / 324
Регистрация: 30.04.2009
Сообщений: 2,633
12.05.2009, 14:39
а можно gotoxy(x,y) использовать
0
 Аватар для Vzik
32 / 28 / 7
Регистрация: 05.05.2009
Сообщений: 58
12.05.2009, 14:42  [ТС]
Наверно можно! А куда его ставить?! Можешь изменить в моей программке
0
2923 / 844 / 324
Регистрация: 30.04.2009
Сообщений: 2,633
12.05.2009, 14:48
это надо ставить перед выводом, gotoxy(x,y)
перед циклом х:= 400;
а в цикле должно быть x:=round(x/2);
y:=1 перед циклом
y:=y+10;- в цикле


Добавлено через 1 минуту 21 секунду
я что то не могу разобраться с твоим кодом, и вот вставляешь то что я написал, туда где у тебя раньше выводились числа, которые в строку
0
 Аватар для Vzik
32 / 28 / 7
Регистрация: 05.05.2009
Сообщений: 58
12.05.2009, 14:54  [ТС]
Ты извини, я наверно замучила тебя...но что-то опять не то
Uses Crt;
Type Tr=^tt; tt=Record
Data:integer;
Left,Right:Tr;
end;
Var
x:integer;
kd,f :Tr;

{zapolnenee}
Procedure dob (n :integer; var h:Tr);
Begin
If h = nil then begin
New(h);
With h^ do
begin
Data:=n;
Left:=nil;
Right:=nil;
end;
end
else if n<= h^.Data then dob(n,h^.left)
else dob(n,h^.right);

End;
{vevod na ekran}
Procedure Print(var t:Tr);
Begin
If t<>nil then
with t^ do begin
Print(left);
write (data,' ');
Print(right);
end;

End;
{ obxod dereva}
Function dep(g:tr) :integer;
var r,l :integer;
begin
if g<>nil
then begin
l:=dep(g^.left);{obxod levogo poddereva}
r:=dep(g^.right);{obxod pravogo poddereva}
if l>r then dep:=l+1
else dep:=r+1;
end
else dep:=0;
end;

Begin
ClrScr;
writeln('vvod vershin; okonchanie - 0');
kd:=nil;
f:=nil;
read (x);
x:=400;
while x<>0 do
begin
dob(x,kd);
x:=round(x/2);
writeln('ocherednoe chislo');
read (x);
end;
f:=kd;
goto(x,y); здесь ошибка identifier x не нравиться!
Print(kd);
writeln;
writeln;
writeln (dep(kd));
readln;
Readln;
end.
0
2923 / 844 / 324
Регистрация: 30.04.2009
Сообщений: 2,633
12.05.2009, 14:57
а ты прописала что это число вещественного типа?

Добавлено через 36 секунд
и вот от этого пляши, я бы сам попробывал но у меня нет на месте рабочем программы
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.05.2009, 14:57
Помогаю со студенческими работами здесь

Не могу дорешать интеграл
-интеграл от 0 до 1 x^2(sqrt (1-x^2))dx Правило 4.2: &quot;Если собираетесь создать новую тему, определитесь с разделом или существующей...

Двоичное дерево
Помогите пожалуйста построить двоичное дерево и найти в нём длину пути(количество ветвей от корня) до минимального элемента

Двоичное дерево
Помогите найти ошибку, в консоль вообще ничего не выводится: #include&lt;iostream&gt; #include&lt;string&gt; #include&lt;fstream&gt; ...

Двоичное дерево
Здравствуйте! Помоги задачу решить! Сразу говорю: это не от лени, нам просто мало объясняют! Хотя бы направление дайте, подсказку...Прогу...

Двоичное дерево
Добрый день! Если поможете хотя бы с несколькими стратегиями, буду благодарен! Задание звучит так: &quot;Сделайте двоичное...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru