Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.02.2010, 18:58   #1
Promax2009
Новичок
Джуниор
 
Регистрация: 10.02.2010
Сообщений: 2
По умолчанию Объясните что делает функция

Если не сложно объясните, что делает функция (желательно построчно).

вот код
Код:
void TBinaryTree::fill_tree(int deep,TTreeItem * & node,int id)
{
	TTreeItem * newitem;

	if (deep<=0) return;

	newitem=new TTreeItem;
	newitem->GetData()=randint(255);
	newitem->GetId()=id++;
	(node->right)=newitem;
	newitem=new TTreeItem;
	newitem->GetData()=randint(255);
	newitem->GetId()=id++;
	(node->left)=newitem;

	if (randint(255)>128)
	{
		fill_tree(deep-1,node->left,id);
		fill_tree(deep-1,node->right,id);
	};
};
По идее должна строить бинарное дерево... Хотелось бы понять как оно строиться
Promax2009 вне форума Ответить с цитированием
Старый 10.02.2010, 19:51   #2
Hollander
Участник клуба
 
Аватар для Hollander
 
Регистрация: 03.05.2007
Сообщений: 1,189
По умолчанию

Вызываешь метод с 3 параметрами:
1. Глубина дерева
2. Родительский элемент дерева
3. Номер ветвей (чтобы их как-то отличать друг от друга)

Код:
if (deep<=0) return; // если глубина равно или меньше 0, то ничего не делаем выходим из метода

	newitem=new TTreeItem; // создаем новый элемент дерева
	newitem->GetData()=randint(255); // в качестве значение подставляем случайное число
	newitem->GetId()=id++; // присваиваем идентификатор ветви(он же номер)
	(node->right)=newitem; // присваиваем в качестве правой ветки родительского элемента только что созданный элемент
	newitem=new TTreeItem; // тоже самое для 2-го элемента
	newitem->GetData()=randint(255);
	newitem->GetId()=id++;
	(node->left)=newitem; // тока в качестве левой ветви

	if (randint(255)>128) // генерируем случайное число, если оно больше 128, то добавляем еще ветви, вызывая опять этот же метод рекурсивно
	{
		fill_tree(deep-1,node->left,id);
		fill_tree(deep-1,node->right,id);
	};
Hollander вне форума Ответить с цитированием
Старый 11.02.2010, 07:37   #3
Promax2009
Новичок
Джуниор
 
Регистрация: 10.02.2010
Сообщений: 2
По умолчанию

Hollander, спасибо, очень помогли!
Promax2009 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Печать. Что делает MS и не делает Delphi Влад12 Общие вопросы Delphi 8 05.05.2010 20:04
функция high что делает? Ivan3000 Помощь студентам 2 04.06.2009 14:05
что делает функция length() ??? Paul_AG Общие вопросы C/C++ 4 11.05.2009 00:07
Что делает этот while do? Levhik Общие вопросы C/C++ 4 25.01.2009 17:27
FindEgual-что делает эта функция? stasig Паскаль, Turbo Pascal, PascalABC.NET 1 14.12.2008 23:02