Форум программистов, компьютерный форум, киберфорум
Turbo Pascal
Войти
Регистрация
Восстановить пароль
Другие темы раздела
Turbo Pascal Проверить, будут ли числа a, b, c, d попарно взаимно просты.Нахождение НОД двух чисел оформить в виде подпрограммы. https://www.cyberforum.ru/ turbo-pascal/ thread545210.html
Проверить, будут ли числа a, b, c, d попарно взаимно просты. Числа называются взаимно простыми, если их наибольший общий делитель (НОД) равен 1. Нахождение НОД двух чисел оформить в виде...
Нарисовать подмигивающего снеговика около елки. Turbo Pascal
На паскале Нарисовать подмигивающего снеговика около елки. ВСЕМ СПАСИБО БОЛЬШОЕ.
"Музыка". Имеется N аудиокассет. Turbo Pascal
На Паскале решите пожалуйста "Музыка". Имеется N аудиокассет.Про каждую известно: количество (до 20) записанных на ней песен или композиций,название и продолжительность (в минутах) каждого...
Turbo Pascal Вычисление функции. Добрый вечер! Не знаю как сделать программу которая будет вычислять суммы по функциям. f(x) = f1(x), f2(x), f3(x) обведены круглой скобкой { f1(x) при каком-то... https://www.cyberforum.ru/ turbo-pascal/ thread545191.html
Turbo Pascal Имитировать карточную игру https://www.cyberforum.ru/ turbo-pascal/ thread545186.html
На паскале решите пожалуйста. Колода 36 карт описана так:Type Karr=(c6,c7,c8,c9,c10,cB,cD,cK,cT,p6,p7,p8,p9,p10,pB,pD,pK,pTt6,t7,t8,t9,t10,tB,tD,tK,tT,b6,b7,b8,b9,b10,bB,bD, bK,bT);В виде множества...
Поменять местами строки в двумерном массиве Turbo Pascal
Программа длжна менять местами две строки. Program lab_2; const maxX=20; const maxY=20; type m=array of integer; var mas:m; razm:integer; str1:integer; str2:integer;
напишите программу вычисления функции Turbo Pascal
помогите пожалуйста решить напишите программу вычисления функции y=x^3, при x>0 y=x^2, при -2≤x≤0 y=x , в остальных случаях для x в диапазоне от -6 до 6 с шагом 0,5
Turbo Pascal Найти все решение тройки натуральных чисел x,y и z, для которых выполняется равенство x*x-y=z*z На паскале Найти все решение тройки натуральных чисел x,y и z из интервала от 1 до 20 для которых выполняется равенство x*x-y=z*z. https://www.cyberforum.ru/ turbo-pascal/ thread545151.html
Turbo Pascal Напечатать список премированных водителей https://www.cyberforum.ru/ turbo-pascal/ thread545139.html
ниче не понимаю в массивах,на черкайте что нить рабочее плз, практику закрыть не могу....
Turbo Pascal Ограничение количества решений У программы следующий код: Program tabl; const x1=-7; x2=11; {интервал} var r,x,dx,y:real; begin clrscr; write('R='); readln(r); write('dx='); readln(dx); ... https://www.cyberforum.ru/ turbo-pascal/ thread545137.html
0 / 0 / 0
Регистрация: 15.03.2012
Сообщений: 46
0

Определить число листьев дерева

11.04.2012, 15:52. Показов 1056. Ответов 1
Метки (Все метки)

Дерево формировать динамически. Заполнить двоичное дерево следующим образом: если число меньше или равно числу записанного в узле дерева, то перемещаемся по левой ветви дерева, иначе по правой ветви до тех пор, пока не встретится пустая связь. Данные, необходимые для формирования дерева считываются из файла.
a) Определить число листьев дерева;
b) На какой высоте находится наибольший элемент дерева;
c) Распечатать содержимое узлов дерева следующим образом: совершаем сначала обход узлов дерева слева, затем справа.
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
uses crt;
type    ukaz=^el_tree;
     el_tree=record
          inf:integer;
         lev,prav:ukaz;
           end;
       files=file of integer;
var p:ukaz;
    n,max,k,i,i1,ur,x,l,j,s,a:integer;
    f:files;
procedure print_1(t:ukaz;i:integer);
var u:ukaz;
begin
 if (i=k)then begin
  if (t^.lev=nil)and(t^.prav<>nil)and(ur=0)  then
   begin new(u);u^.inf:=x;t^.lev:=u;u^.lev:=nil;u^.prav:=nil;ur:=1;end;
  if (t^.prav=nil)and(ur=0) then
   begin new(u);u^.inf:=x;t^.prav:=u;ur:=1;u^.lev:=nil;u^.prav:=nil;end;
   end else begin print_1(t^.prav,i+1); print_1(t^.lev,i+1);end;end;
procedure print_tree(t: ukaz; h:integer;x,y:integer);
var s:string[40];
    i:integer;
begin if (t<>nil) then begin
      GotoXY(x,y);write(t^.inf);s:='';
      for i:=1 to h-1 do s:=s+'+';
      if t^.prav<>nil then
    begin GotoXY(x+2,y);textcolor(14);write(s+'┐');textcolor(15);end;
      if t^.lev<>nil then
    begin GotoXY(x-h,y);textcolor(14);write('┌'+s);textcolor(15);end;
      print_tree(t^.lev,h div 2,x-h,y+2);print_tree(t^.prav,h div 2,x+h,y+2);
      if ur<y div 2 then ur:=y div 2;end;end;
procedure print(t:ukaz;i:integer);
begin
 if t<>nil then begin
  if (t^.prav=nil)and(t^.lev=nil)  then k:=k+1;
  print(t^.lev,i+1); print(t^.prav,i+1);end;end;
procedure print_u(t:ukaz;i:integer);
begin
 if t<>nil then begin
  write(t^.inf,' ');print_u(t^.lev,i+1); print_u(t^.prav,i+1);end;end;
procedure list(t:ukaz;h:integer);
begin
 if (t<>nil) then begin
  if (t^.inf>max) then begin k:=h+1;max:=t^.inf;end;
  list(t^.lev,h+1);
  list(t^.prav,h+1);end;end;
BEGIN ClrScr;textcolor(14);write('Введи число элементов дерева <=32: ');
 textcolor(15);readln(n);assign(f,'der.dat');rewrite(f);randomize;
 textcolor(14);write('Элементы дерева: ');textcolor(15);
 for i:=1 to n do
  begin a:=random(100);write(f,a);write(a,' ');end;close(f);
 new(p);p^.lev:=nil;p^.prav:=nil;reset(f);read(f, p^.inf);
 k:=1;j:=2;l:=2;i1:=1;
 for i:=1 to n-1 do
  begin ur:=0;read(f,x);Print_1(p,1);i1:=i1+1;
    if i1>j then begin k:=k+1;l:=l*2;j:=j+l;end;end;
 i1:=k+1;print_tree(p,16,40,4);writeln;writeln;writeln;k:=0;
 max:=p^.inf;k:=1;list(p,0);textcolor(14);
 write('макс. число равно ');textcolor(15);
 write(max);textcolor(14);write(' на уровне ');textcolor(15);writeln(k);
 k:=0;print(p,0);textcolor(14);write('число листьев равно ');textcolor(15);
 writeln(k);textcolor(14);
 write('распечатка дерева: ');textcolor(15);print_u(p,0);writeln;readln;
END.
Добавлено через 1 минуту
Объясните пожалуйста задачу полностью!)))

Вернуться к обсуждению:
Определить число листьев дерева
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.04.2012, 15:52
Готовые ответы и решения:

Определить количество листьев на каждом уровне дерева итеративным способом
Здравствуйте, необходима помощь. Необходимо написать процедуру, определяющую количество листьев на...

Нужно напечатать все элементы с листьев дерева
Привет! Нужна помощь с деревьями. Нужно напечатать все элементы с листьев дерева. Буду очень...

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

Бинарные деревья. Рекурсивный алгоритм обработки (Преобразование дерева исключением всех его листьев.)
Прошу подсказать текст программы

1
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.