Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
Alvin Seville
 Аватар для Соколиный глаз
343 / 273 / 134
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 22

Рекурсивное добавление в дерево

30.01.2018, 20:43. Показов 1004. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вот есть код (не мой):
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
procedure Insert(var Root: TTree; X: T);
 
    { Дополнительная процедура, создающая и инициализирующая новый узел }
    procedure CreateNode(var p: TTree; n: T);
    begin
        New(p);
        p^.value := n;
        p^.Left := nil;
        p^.Right := nil
    end;
    
begin
    if Root = nil Then CreateNode(Root, X) { создаем новый узел дерева }
    else 
        with Root^ do begin
            if value < X then Insert(Right, X)
            else
                if value > X Then Insert(Left, X)
                else 
                { Действия, производимые в случае повторного
                внесения элементов в дерево}
        end;
end;
Вопрос такой. Если у меня есть пустое дерево. Я создал его корень. В корне лежит число, допустим 4. Добавляю в дерево число 1. Иду от корня влево. Вот вызвал рекурсивно процедуру создания дерева от Root.Left. Но: почему я могу в процедуре написать просто CreateNode(Root, X)? Как компьютер поймет что это левый потомок дерева, а не просто что то отдельное? Вопрос как я понимаю глупый, но не могу разобраться.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.01.2018, 20:43
Ответы с готовыми решениями:

Рекурсивное дерево поиска
Всем добра :) На днях я решил познакомиться с Python и сейчас столкнулся со следующей проблемой: при создании вершин в дереве они...

Рекурсивное добавление префикса к именам всех файлов с некоторыми исключениями
Добрый вечер. Нужна помощь в таком вопросе: Есть рабочий каталог D:\bat с десятком подкаталогов. Нужно добавить к имени всех файлов (...

Рекурсивное и не рекурсивное вычисление НОД
Здравствуйте! Имеется код вычисления НОД. Как сделать его рекурсивным и НЕ рекурсивным, и в чём отличие рекурсивного вычисления от...

1
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33405 / 21515 / 8236
Регистрация: 22.10.2011
Сообщений: 36,916
Записей в блоге: 12
30.01.2018, 23:58
Потому что ты пришел в ссылку на левое поддерево и Root у тебя в данный момент - это именно тот nil, который указывает на левое поддерево а не что-то отдельное. Вот этот nil и будет заменен на адрес добавленного листа. Параметр же по ссылке передается, а не по значению...
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.01.2018, 23:58
Помогаю со студенческими работами здесь

Добавление строки в дерево
написал функцию добавления. Не могу понять почему не работает проблема в следующем: создаю prev в него все нормально помещается, но как...

Добавление раздела в дерево
есть добавление, которое работает.Также есть два treeview, на разных формах, получается дело состоит в следующем, после node70 он...

N дерево, добавление элемента
Добрый вечер, не могу нормально написать добавление узла в дереве. Несколько вариантов пробовал, ни один не сработал, это последний. Где...

Добавление нового узла в B-дерево
Пусть я добавляю в дерево некоторый узел, такой что он должен быть добавлен после элемента s. Но: узел с s уже заполнен. Как разрулить эту...

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


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru