Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вывести бинарное дерево в StringGrid 
:(
    Опции темы
SuperRustam
Дата 29.12.2010, 18:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 11.12.2010

Репутация: нет
Всего: нет



С++.

Как вывести бинарное дерево в StringGrid? Оно должно быть по структур выведено. Т.е. меньший эл-т левее, больший - правее, корень - выше и по середине
PM MAIL   Вверх
cyberstream
Дата 29.12.2010, 20:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 138
Регистрация: 7.9.2006

Репутация: 2
Всего: 4



Так и выводи.

StringGrid1->Cells[левее][строка] = меньший 
StringGrid1->Cells[правее][строка] = больший 
StringGrid1->Cells[посередине][строка выше] = корень 
--------------------
Не знаешь кого спросить? - Спроси google!
PM MAIL   Вверх
xvr
Дата 31.12.2010, 14:44 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 48
Всего: 223



Цитата(SuperRustam @ 29.12.2010,  18:40)
Как вывести бинарное дерево в StringGrid? Оно должно быть по структур выведено. Т.е. меньший эл-т левее, больший - правее, корень - выше и по середине

Рекурсивно. Сначала выводится левая ветка (входные параметры - строка,колонка, выходные - количество колонок), потом сам узел (выше на 1 строку и правее на 1 колонку, чем правая граница выведенного поддерева), потом правое поддерево (колонка - следующая)
Код

int draw_tree(Tree* node, int col=0, int row=0)
{
 int width=0;
 if (node->left)
  {
   width=draw_tree(node->left,col,row+1);
   col+=width;
  }
 StringGreed->Cells[col][row]=node->Text; // Добавить: сделать resize грида, если надо
 width++; col++;
 if (node->right)
  {
   width+=draw_tree(node->right,col,row+1);
  }
 return width; 
}


Это сообщение отредактировал(а) xvr - 31.12.2010, 14:45
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.1437 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.