|
|
|
Отрисовка бинарного дерева.
|
|||
|---|---|---|---|
|
#18+
Всем доброго дня! Есть бинарное дерево заполненное данными. Нужно его отобразить на плоскости что бы ветви не пересекались. Может кто это уже делал, может придумает) Нужен не пример кода а описание алгоритма. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2006, 15:16:03 |
|
||
|
Отрисовка бинарного дерева.
|
|||
|---|---|---|---|
|
#18+
Высчитываем ширину дерева по количество его листьев нижнего уровня. И рисуем, соответственно, снизу вверх. Понятно, что в бинарном дереве количество элементо в на верхнем уровне (корень сверху) меньше, чем количество элементов на верхнем уровне. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2006, 16:54:45 |
|
||
|
Отрисовка бинарного дерева.
|
|||
|---|---|---|---|
|
#18+
Но на нижнем уровне может быть и два лепестка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2006, 17:48:18 |
|
||
|
Отрисовка бинарного дерева.
|
|||
|---|---|---|---|
|
#18+
А если у нас например в дереве 10 элеметов и каждое следующее будет лувым лепестком предыдущего, тогда у нас получиться ширина 10 лепестков а снизу всего один будет... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2006, 17:55:40 |
|
||
|
Отрисовка бинарного дерева.
|
|||
|---|---|---|---|
|
#18+
Согласен. Тогда максимальную ширину можно получить по формуле 2 * tree.deep(). Дерево нарисовать можно, но будет не красиво. Интересная задачка :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2006, 19:27:11 |
|
||
|
Отрисовка бинарного дерева.
|
|||
|---|---|---|---|
|
#18+
LeonidvСогласен. Тогда максимальную ширину можно получить по формуле 2 * tree.deep(). Дерево нарисовать можно, но будет не красиво. Интересная задачка :) Блин, почему править сообщения нельзя '( 2^(tree.deep()-1). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2006, 19:29:16 |
|
||
|
Отрисовка бинарного дерева.
|
|||
|---|---|---|---|
|
#18+
Ширина дерева это 2 в степени максимальной глубины дерева. Сегодня ночью буду что-то еще думать. Помогайте. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2006, 19:57:35 |
|
||
|
Отрисовка бинарного дерева.
|
|||
|---|---|---|---|
|
#18+
AlexeyShponarskyВсем доброго дня! Есть бинарное дерево заполненное данными. Нужно его отобразить на плоскости что бы ветви не пересекались. Может кто это уже делал, может придумает) Нужен не пример кода а описание алгоритма. Спасибо. Как угодно. Н-р, обойти дерево к глубину, параллельно его рисуя. Грубо это формулируется так: Код: plaintext 1. 2. 3. 4. 5. 6. При таком алгоритме дерево будет выглядеть примерно так (в скобочкам последовательность просмотра вершин): Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2006, 20:38:43 |
|
||
|
Отрисовка бинарного дерева.
|
|||
|---|---|---|---|
|
#18+
http://www.research.att.com/~john/Grappa/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2006, 12:03:20 |
|
||
|
Отрисовка бинарного дерева.
|
|||
|---|---|---|---|
|
#18+
Ура! придумал, вобщем у меня схема такова: Узел: Код: plaintext 1. 2. 3. 4. Схема рисования: Задача сводится до того что бы найти расстояние ребра от от узла до узла. Верхнее растояние будет равно количеству уровней глубины дерева умноженное на расстояние между узлами самого нижнего уровня(максимального). Записываем это значение в корень. Рисуем первую вершину(корень). Дальше рекурсивно вызываем эту же функцию для всех узлов. Расстояние вычисляем делением предыдущего расстояния на 2. И полусается красивенькое дерево построенное так сказать по шаблону. Вот и весь алгоритм :) Спасибо всем) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2006, 15:11:29 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=34051914&tid=2147817]: |
0ms |
get settings: |
6ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
169ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
| others: | 203ms |
| total: | 473ms |

| 0 / 0 |
