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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.06.2012, 17:11   #1
dimentius
 
Регистрация: 01.01.2011
Сообщений: 5
По умолчанию 2-3 дерево С++

Задание со вставкой элементов в 2-3 дерево.
В написании кода столкнулся с ошибкой. Программа падает на поиске
Приведу кусок кода:
Код:
Branch* TwoThreeTree::search (Branch *element, int value) {
	
	if ((isLeaf(element->childs[0]))
		&& (isLeaf(element->childs[1])) 
		&& (isLeaf(element->childs[2]))) 
		return element;
	if (value <= element->leftKey)
		return search(element->childs[0], value);
	else if (value <= element->rightKey)
		return search(element->childs[1], value);
	else return search(element->childs[2], value);
}

void TwoThreeTree::Add(int value) {
	if (root == NULL) {
		root = new Branch();
		root->leftKey = value;
	} else {
		if (isLeaf(root)) {
			root->childs[0] = new Branch();
			(root->childs[0])->leftKey = root->leftKey;
		}
		Branch *element = new Branch();
		element= search(root, value);//тут падает
		Branch *newElement = new Branch();
		for (int i = 0; i < 4; i++)
			if (element->childs[i] == NULL) {
				element->childs[i] = newElement;
				break;
			}
			Sort(element->childs);

		if (element->childs[3] != NULL)
			Insert(element);
	}
}
bool TwoThreeTree::isLeaf (Branch *element) {
	return ((element == NULL)
		&& (element->childs[0] == NULL)
		&&(element->childs[1] == NULL)
		&&(element->childs[2] == NULL));
}

//сам Branch:
class Branch {
public:
	Branch(){
           leftKey = rightKey = 0;
	father = NULL;
	childs = new Branch*[4];
           }
	int leftKey, rightKey;
	Branch *father;
	Branch **childs;
};
Ошибка:
Unhandled exception at 0x77ae15de in 2-3.exe: 0xC0000005: Access violation reading location 0x0000000c.

Буду благодарен откликнувшимся)
dimentius вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
дерево jekie182 Паскаль, Turbo Pascal, PascalABC.NET 1 27.04.2012 15:40
B+ дерево! megaster Помощь студентам 0 10.12.2011 17:01
В-дерево kikimka Фриланс 5 12.07.2010 23:16
Дерево Abricosko БД в Delphi 2 03.06.2010 12:16
Дерево Yoger БД в Delphi 3 25.01.2007 01:24