IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> помогите пожалуйста с деревьями, Деревья-добавление и удаление листьев
Rzevsky
сообщение 11.10.2004 18:50
Сообщение #1


Гость






Задача звучит так: используя представление дерева, с помощью связных списков написать программу для добавления и удаления листьев дерева.
Пожалуйста помогите, если не трудно.
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Amro
сообщение 11.10.2004 22:58
Сообщение #2


Пионер
**

Группа: Пользователи
Сообщений: 146
Пол: Мужской

Репутация: -  2  +


Мда деревья это муть полная......я сам трудно врубаюсь......
вот раскопал кое-что, это реализация дерева(т.е как раз добавление элементов) и его вывод, в узлах дерева нах-ся символы, которые добавляются в дерево при помощи сравнения их ASCII кодов

{ вывод на экран вершин дерева /слева направо/ }
       program DisplayTree;
       uses Crt;
       type
         TreePointer = ^tree;
         tree = record
           data: char;
           left: TreePointer;
           right: TreePointer;
           end;
       var
         root, dummy: TreePointer;
         ch:char;

       function STree(root, r:TreePointer; data: char):TreePointer;
       begin
         if r = nil then
         begin
           new®; { получить новую вершину }
           r^.left := nil;
           r^.right := nil;
           r^.data := data;
           if data < root^.data then root^.left := r
           else root^.right := r;
          STree := r;
        end else
        begin
          if data<r^.data then STree := STree(r, r^.left, data)
          else STree := STree(r, r^.right, data)
        end;
       end; { конец процедуры STree }

       procedure PrintTree(r: TreePointer; n: integer);
       var
         i:integer;
       begin
         if r<>nil then begin
            PrintTree(r^.left, n+1);
            for i := 1 to n do Write('   ');
            Writeln(r^.data);
            PrintTree(r^.right, n+1);
          end;
       end; { конец процедуры PrintTree }
       begin
         root := nil;
         repeat
           Write('enter a letter (Q to quit): ');
           ch := ReadKey; Writeln(ch);
           if root= nil then root := STree(root, root, ch)
           else dummy := STree(root, root, ch);
           ch := UpCase(ch);
        until ch ='Q';
       PrintTree(root, 0);
     end.

Rzevsky ИТ 21 Штурмует форум :D АГУ ФоревА :P


--------------------
Закон иудеев: Семь раз отмерь, один отрежь.
Закон экономии: Семь раз отмерь, семь раз отрежь.
Закон программиста: Семь раз отрежь, ошибся, отмерь.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 21.06.2025 0:00
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"