Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Алгоритмы > Дерево с произвольным ветвлением


Автор: PRF 14.5.2008, 18:48
Здрасти!! помогите пожалуйста!!!

Придумайте способ хранения дерева с произвольным ветвлением, при котором в каждой вершине хранятся всего два (а не три, как в схеме «левый ребенок-правый сосед») указателя плюс одна булева переменная.

Спасибо!

Автор: maxdiver 14.5.2008, 18:52
"Левый рёбенок" + "Правый сосед" = 2 smile
Зачем нужен третий указатель, я что-то не понимаю.

Автор: PRF 14.5.2008, 19:01
Я сам точно не понимаю, но так вроде, на левого ребенка , правый сосед, и на вершнину! Короче дерево с произвольным ветвлением!!

Автор: Earnest 15.5.2008, 10:56
Еще нужен парент. Хотя во многих алгоритмах без парента прожить можно, но есть случаи, когда очень неудобно без него.

Автор: ksili 15.5.2008, 11:54
Цитата(PRF @  14.5.2008,  22:48 Найти цитируемый пост)
Придумайте способ хранения дерева с произвольным ветвлением, при котором в каждой вершине хранятся всего два (а не три, как в схеме «левый ребенок-правый сосед») указателя плюс одна булева переменная.

Ты не поверишь, этот способ и есть дерево! По сути это однонаправленный список структур, содержащих три поля: два указателя на ветви "соседа" и "ребёнка" и одна булева переменная.

Автор: maxdiver 15.5.2008, 13:09
Ну без parentа практически всегда можно обойтись. А удобство - это уже второстепенный вопрос, здесь же требуется _хранить_ дерево, а не делать с ним что-то smile
Правда, мне ещё непонятно, зачем boolean нужен smile

Автор: Kallisto 15.5.2008, 21:57
я выкрутился след. образом: 
1. Каждый узел был пронумерован, от 1 до N.
2. Далее прохожусь по дереву и пишу в файл: номер, значения узла. И запоминаю с какими узлами связан этот узел
3. после записи значений, пишу связи.

Пример:
user posted image

Красный - номер вершины.
Синий - значение.

Выходной файл:
Код

0
6
5
1
7
4
11
0
0

1 5
2 5
3 6
4 6
5 7
6 7
7 9
8 9


Автор: SoWa 16.5.2008, 11:08
А можно не хранить нумерацию. Можно её выстраивать из пар предок-наследник. Вроде на бумажке возможно

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)