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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.04.2011, 09:43   #1
CodeNOT
Форумчанин
 
Аватар для CodeNOT
 
Регистрация: 08.11.2010
Сообщений: 593
По умолчанию Определение сбалансированного дерева

Добрый день, в общем я хочу написать функцию, которая определяет сбалансированность дерева, т.е. она вернет 0 если дерево не сбалансировано и не 0 если дерево сбалансировано(по сути говоря любое сбалансированное дерево можно считать авл деревом). Но функция постоянно возвращает у меня 0.
вот код:
Код:
int This_is_Avl(Tree Root)
{
	int L,R;
	Tree LT,RT;
	if(Root!=NULL)
	{
		RT=Root->Right;
		LT=Root->Left;
		R=This_is_Avl(RT);
		L=This_is_Avl(LT);
			if(L<R)
			{
				if(R-L<=1)
				{
					return R++;
				}else return 0;
			}
			if(L>R)
			{
				if(L-R<=1)
				{
					return L++;
				}else return 0;
			}
	}else return 0;
}
CodeNOT вне форума Ответить с цитированием
Старый 10.04.2011, 13:19   #2
EC.cpp
Пользователь
 
Регистрация: 09.04.2011
Сообщений: 30
По умолчанию

Нда, что характерно в функции нигде не вижу чтобы возвращалась истина. Вот return 0 есть, а return 1 - чёт ни одного.
Попробуй пересмотреть еще раз внимательно этот алгоритм, и вставь return 1, туда где это необходимо чтоли.
EC.cpp вне форума Ответить с цитированием
Старый 10.04.2011, 13:27   #3
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Не внимательно смотрите:
Код:
int This_is_Avl(Tree Root)
return R++;
return L++;
Возможно ошибка в том, что return R++ (L++) не может быть выполнена.
Попробуйте так: return ++R;
В этом случае происходит сначала суммирование, а затем выход из функции.
Но, поскольку сдесь не видно цикла, то можно и так return 1;
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder

Последний раз редактировалось Smitt&Wesson; 10.04.2011 в 13:36.
Smitt&Wesson вне форума Ответить с цитированием
Старый 20.05.2011, 10:02   #4
volgruk
Новичок
Джуниор
 
Регистрация: 20.05.2011
Сообщений: 1
По умолчанию

Цитата:
if(L>R)
нужно переписать на if(L>=R)

З.Ы: или if(R>L) переписать на if(R>=L)
volgruk вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
сохранение дерева demonara Помощь студентам 3 03.01.2011 12:35
Программа поиска, включения, исключения из сбалансированного поискового дерева prostac Помощь студентам 0 07.06.2010 17:36
Глубина дерева Иллидан Паскаль, Turbo Pascal, PascalABC.NET 1 29.03.2008 11:36
обход дерева ribka Помощь студентам 2 11.12.2007 20:38