Нюта241
26.05.2022 08:44

переделать программу на Паскале Разработать программу, реализующую следующий набор операций с двоичными деревьями поиска:
1. поиск вершины с заданным значением ключа с выводом счетчика появлений данного ключа.
2. добавление новой вершины в соответствии со значением ее ключа или увеличение счетчика числа появлений.
3. построчный вывод дерева в наглядном виде с обратно-симметричного обхода.
Все действия оформляются как подпрограммы.
TYPE
pNode = ^dNode;
dNode = RECORD
Inf: INTEGER;
Left,Right: pNode
END;
pStack = ^Item;
Item = RECORD
Inf: pNode;
next: pStack;
END;
VAR
Count, N, Num: INTEGER;
pRoot : pNode;

PROCEDURE Privetstvie();
BEGIN
WRITELN('Выберите действие:');
WRITELN('1-Построить дерево');
WRITELN('2-Обход в прямом направлении');
WRITELN('3-Обход в симметричном направлении');
WRITELN('4-Обход в обратно-симметричном направлении');
WRITELN('5-Итеративный Обход в симметричном направлении');
WRITELN('0-Выхода');
END;

PROCEDURE ShowOnward(VAR pCur: pNode; L: INTEGER);
BEGIN
IF pCur <> NIL
THEN
BEGIN
WRITELN('':4*L, pCur^.Inf);
ShowOnward(pCur^.Left, l+1);
ShowOnward(pCur^.Right, l+1)
END
END;

PROCEDURE ShowSymmetric(VAR pCur: pNode; L: INTEGER);
BEGIN
IF pCur <> NIL
THEN
BEGIN
ShowSymmetric(pCur^.Left, l+1);
WRITELN('':4*L, pCur^.Inf);
ShowSymmetric(pCur^.Right, l+1)
END
END;

PROCEDURE ShowBackSymmetric(VAR pCur: pNode; L: INTEGER);
BEGIN
IF pCur <> NIL
THEN
BEGIN
ShowBackSymmetric(pCur^.Right, L+1);
WRITELN('':4*L, pCur^.Inf);
ShowBackSymmetric(pCur^.Left, L+1)
END
END;

PROCEDURE Push(var s : pStack; Value : pNode);
var p : pStack;
BEGIN
NEW(p);
p^.next := s;
p^.Inf := Value;
s := p;
END;

PROCEDURE Pop(var s : pStack; var Value : pNode);
VAR
p : pStack;
BEGIN
IF s = NIL
THEN
Value := NIL
ELSE
BEGIN
Value := s^.Inf;
p := s;
s := s^.next;
DISPOSE(p);
END;
END;

PROCEDURE IterativeSymmetric(pCur: pNode);
VAR
s : pStack;
BEGIN
s := NIL;
REPEAT
WHILE pCur<> NIL
DO
BEGIN
Push(s, pCur);
pCur := pCur^.Left;
END;
IF s <> NIL
THEN
BEGIN
Pop(s, pCur);
WRITELN(pCur^.Inf);
pCur := pCur^.Right;
END;
UNTIL (s = NIL) AND (pCur = NIL);
END;

PROCEDURE ClearTree(pCur: pNode);
BEGIN
IF pCur <> NIL
THEN
BEGIN
ClearTree(pCur^.Left);
ClearTree(pCur^.Right);
DISPOSE(pCur);
Count := Count - 1;
IF Count = 0
THEN
pCur := NIL
END
END;

PROCEDURE CreateNode(var p : pNode; Data : INTEGER);
BEGIN
NEW(p);
p^.Inf := Data;
p^.Left := NIL;
p^.Right := NIL
END;

FUNCTION AddNode(var Root : pNode; Data : INTEGER) : BOOLEAN;
BEGIN
Result := TRUE;
IF Root = NIL
THEN
CreateNode(Root, Data)
ELSE
IF Root^.Inf < Data
THEN Result := AddNode(Root^.Right, Data)
ELSE
IF Root^.Inf > Data
THEN
Result := AddNode(Root^.Left, Data)
ELSE
Result := FALSE
END;

PROCEDURE AddNodes(VAR pCur: pNode; Count: INTEGER);
VAR
i, n : Integer;
BEGIN
RANDOMIZE;
FOR i := 1 TO Count
DO
REPEAT
n := Random(99);
UNTIL AddNode(pCur, n)
END;

BEGIN
pRoot := NIL;
Count := 0;
N := 6;
WHILE N <> 0
DO
BEGIN
Privetstvie();
READLN(N);
CASE N OF
0: BEGIN WRITELN('Удачи!До новых встреч.'); BREAK END;
1: BEGIN WRITELN('Число вершин дерева = '); READLN(Num); ClearTree(pRoot);
AddNodes(pRoot, Num); WRITELN('Дерево Создано') END;
2: IF pRoot <> NIL
THEN
ShowOnward(pRoot, 0)
ELSE
WRITELN('Дерево пустое');
3: IF pRoot <> NIL
THEN
ShowSymmetric(pRoot,0)
ELSE
WRITELN('Дерево пустое');
4: IF pRoot <> NIL
THEN
ShowBackSymmetric(pRoot, 0)
ELSE
WRITELN('Дерево пустое');
5: IF pRoot <> NIL
THEN
IterativeSymmetric(pRoot)
ELSE
WRITELN('Дерево пустое');
ELSE BEGIN WRITELN('Введенные данные неверны,повторите ввод'); N := 6 END
END
END
END.

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
dchaikovskiu
09.10.2021 16:32

1. Основные типы диаграмм

Диаграммы-линии (графики)

Диаграммы-области

Столбчатые и полосовые диаграммы (гистограммы)

Круговые (секторные) диаграммы

Радиальные (сетчатые) диаграммы

Картодиаграммы

Биржевые диаграммы

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

3. Щелкните ряд данных правой кнопкой мыши, чтобы отобразить дополнительные сведенья, а затем выберете пункт ФОРМАТ ПОДПИСЕЙ ДАННЫХ. В разделе ПАРАМЕТРЫ ПОДПИСИ в группе ВКЛЮЧИТЬ В ПОДПИСЬ выберите требуемые параметры.

4. Изменение типа существующей диаграммы

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

На вкладке Конструктор в группе Тип нажмите кнопку Изменить тип диаграммы.

В диалоговом окне Изменение типа диаграммы выберите тип.

5. вкладка конструктор, вкладка маркет.

6. ПРАВИЛО 1. Используйте правильный тип и формат визуализации,Располагайте данные логично, Дизайн не должен препятствовать пониманию или искажать данные, Визуализируйте данные так, чтобы их можно было легко сравнивать.

ПРАВИЛО 5. МИНИМУМ ЭЛЕМЕНТОВ

На диаграмме должны быть только необходимые элементы.

ПРАВИЛО 6. НЕ ПЕРЕГРУЖАЙТЕ ИНФОРМАЦИЕЙ

Следите, чтобы не было визуальной загроможденности.

ПРАВИЛО 7. ПОНЯТНЫЙ ФОРМАТ ЧИСЕЛ

Числа должны быть с разделителями разрядов и без лишних знаков после запятой.

ПРАВИЛО 8. НАЗВАНИЕ И ПОДПИСИ

У диаграммы должно быть название и полная легенда.

ПРАВИЛО 9. ОБЩЕПРИНЯТЫЕ ЦВЕТОВЫЕ РЕШЕНИЯ

Не нарушайте общепринятое использование того или иного цвета.

ПРАВИЛО 10. МИНИМУМ ТИПОВ ДИАГРАММ

Используйте один вид диаграммы для однотипных данных.

ПРАВИЛО 11. ЕДИНАЯ ЦВЕТОВАЯ ПАЛИТРА

Придерживайтесь одной цветовой гаммы.

7. Удаление диаграммы

Щелкните край рамки диаграммы, чтобы выделить ее.

На вкладке Главная в группе Редактирование нажмите кнопку Очистить > Очистить все. Совет: Это можно сделать быстрее, нажав клавишу Delete.

8. Стандартные графики МТ4

Наиболее информативный тип графиков.

0,0(0 оценок)
Ответ:
anatoy
21.05.2023 18:36
о том лылвдаоврч. малая лздп т в том числе и в итоге я не знаю что делать будешь сегодня в школе не было бы круто если бы я была на концерте была бы не сказала бы сразу и не надо от него и так все плохо было не до конца жизни был назначен на должность начальника штаба дивизии и в итоге я не знаю почему так долго не могла бы и г в состав округа уже не будет на месте и не знаю как г г г И далёкий путь начинается с близкого. И далёкий путь начинается с близкого. И далёкий путь начинается с близкого. И далёкий путь начинается с близкого. И далёкий путь начинается с близкого. И далёкий путь начинается с близкого. И далёкий путь начинается с близкого. И далёкий путь начинается с близкого. И далёкий путь начинается с близкого. И далёкий путь начинается с близкого. И далёкий путь начинается с близкого. И далёкий путь начинается с близкого. И далёкий путь начинается с близкого. И далёкий путь начинается с близкого. И далёкий путь начинается с близкого. И далёкий путь начинается с близкого. И далёкий путь начинается с близкого. И далёкий путь начинается с близкого. И далёкий путь начинается с близкого. И далёкий путь начинается с близкого. И далёкий путь начинается с близкого. И далёкий путь начинается с близкого. И далёкий путь начинается с близкого.
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота