С Новым годом! Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 08.04.2011
Сообщений: 5

Преобразовать дерево в идеально сбалансированное

23.12.2011, 16:49. Показов 1797. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дана программка построения дерева.Нужно:
1)В виде дополнительной процедуры преобразовать дерево в идеально сбалансированное.количество узлов дерева − от одного до десяти, значения поля Data для узлов брать из исходного массива.


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
uses crt;
type
PTree=^TTree;
TTree=record
num:integer;
LEFT,RIGHT:PTree;
end;
const n=10;
var
a:array[1..n] of integer;
i, z,v,max:integer;
predkor,Hkor, kor:Ptree;
procedure print(TREE:Ptree;n:integer);
var q:integer;
begin
if TREE<>nil then
begin
for q:= 1 to n do
write('*');
writeln(TREE^.num);
print(TREE^.LEFT,n+1);
print(TREE^.RIGHT,n+1);
end;
end;
procedure insert(var TREE:Ptree;x:integer);
var CUR,TNEW:PTree;
begin
CUR:=TREE;
if CUR=nil then
begin
new(TNEW);
TNEW^.num:=x;
TNEW^.LEFT:=nil;
TNEW^.RIGHT:=nil;
Hkor:=TNEW;
end
else
begin
new(TNEW);
TNEW^.num:=x;
TNEW^.RIGHT:=nil;
TNEW^.LEFT:=nil;
if CUR^.num>x
then
if CUR^.LEFT=nil
then
begin
TREE^.LEFT:=TNEW;
end
else begin CUR:=CUR^.LEFT; insert(cur,x); end
else
if CUR^.RIGHT=nil
then
begin
TREE^.RIGHT:=TNEW;
end
else begin CUR:=CUR^.RIGHT; insert(cur,x);end;
end;
end;
procedure clear(var tree:ptree) ;
var cur:ptree;
begin
cur:=tree;
if cur<>nil then
begin
clear(cur^.LEFT);
clear(cur^.RIGHT);
dispose(cur);
end;
tree:=nil;
end;
procedure menu(v:integer);
begin
case  (v) of
1:begin writeln; if Hkor<>nil then print(Hkor,0) else writeln('дерево пусто'); end;
2:begin writeln('введите ключ: ');read(z); insert(Hkor,z); end;
3:begin clear(Hkor);  end;
0:v:=0;
end;
end;
begin
//a[1]:=random(10);a[2]:=random(10);a[3]:=random(10);a[4]:=random(10);a[5]:=random(10);
//a[6]:=random(10);a[7]:=random(10);a[8]:=random(10);a[9]:=random(10);a[10]:=random(10);
a[1]:=7; a[2]:=5; a[3]:=9; a[4]:=3; a[5]:=1; a[6]:=10; a[7]:=6; a[8]:=8; a[9]:=4; a[10]:=2;
Hkor:=nil;
for i:= 1 to n do
begin
insert(Hkor,a[i]);
end;
v:=1;
writeln('***************************');
writeln('1 - Печать дерева');
writeln('2 - добавление элемента в дерево');
writeln('3 - очистка дерева');
writeln('***************************');
Writeln;
while v<>0 do
begin
readln(v);
menu(v);
Writeln;
end;
end.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.12.2011, 16:49
Ответы с готовыми решениями:

Идеально-сбалансированное дерево
Приветствую,нужно в ИСД добавить элемент так,что бы оно впоследствии осталось таким же. Написал прогу,работать - работает,но не добавляет...

Построить сбалансированное дерево и удалить из него некоторый узел
Построить сбалансированное дерево и удалить из него некоторый узел. Не понимаю как построить сбалансированное дерево.

Идеально сбалансированное дерево
Интересует как работает этот кусок кода) по идеи Create(&amp;tmp-&gt;right, nr); сюда компилятор никогда не доберется? и еще как она выходит из...

1
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33371 / 21497 / 8234
Регистрация: 22.10.2011
Сообщений: 36,893
Записей в блоге: 12
23.12.2011, 20:47
По алгоритму: https://it.kgsu.ru/C_DIN/din_0068.html получилось вот это:

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
var
   newRoot : PTree;
 
procedure CreateBalanced(var index : Integer;
                         n : integer; var p : PTree);
var
   now : PTree;
   nLeft, nRight : integer;
begin
   now := p;
   if n = 0 then p := nil
   else
   begin
      nLeft := n div 2; nRight := n - nLeft - 1;
      new(now);
      inc(index); now^.num := A[index];
      CreateBalanced(index, nLeft, now^.Left);
      CreateBalanced(index, nRight, now^.Right);
      p := now;
   end;
end;
, вызывать так:
Pascal
1
2
3
4
begin
   index := 0; // Var index : Integer
   CreateBalanced(index, n, newRoot); // <--- newRoot - корень ИСД
end;
, но массив A перед созданием идеально сбалансированного дерева нужно упорядочить.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.12.2011, 20:47
Помогаю со студенческими работами здесь

Идеально сбалансированное дерево
Всем привет. Нужно построить идеально сбалансированное дерево из букв, упорядоченное я сделал, но не могу понять, как сделать идеально...

Идеально сбалансированное дерево
Дано идеально сбалансированное дерево. Нужно найти сумму его листьев. Дерево построил, но как найти сумму листьев не могу понять.

Идеально сбалансированное дерево
В файле input.txt хранится последовательность целых чисел.По входной последовательности построить идеально сбалансированное дерево и найти...

Построить Идеально сбалансированное дерево
Нужно срочно организовать и отладить программу для построения и печати на экран идеально сбалансированное двоичное дерево .....помогите...

Перестроить вырожденное дерево в идеально-сбалансированное
Помогите, пожалуйста, перестроить вырожденное дерево в идеально-сбалансированное Добавлено через 7 минут Реализовать в консоли ...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
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
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru