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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.04.2008, 00:25   #1
Roman-S
 
Регистрация: 22.02.2008
Сообщений: 8
По умолчанию Бинарное дерево, нид хэлп

Построить идеально сбалансированное дерево и найти для него глубину заданного узла a. Нужно написать функцию Depth.
Код:
#include <stdio.h>

struct Ttree
{
	int inf;
	Ttree *left;
	Ttree *right;
};

FILE *f=fopen("input.txt","r");
FILE *g=fopen("output.txt","w");

void Create(int n,Ttree *&tr)
{
	int a;
	if(n>0)
	{
		tr=new Ttree;
		fscanf(f,"%d",&a);
		tr->inf=a;
		tr->left=NULL;
		tr->right=NULL;
		int nl=n/2, nr=n-nl-1;
		Create(nl,tr->left);
		Create(nr,tr->right);
	}
}

void Del_Tree(Ttree *&tr)
{
	if(tr)
	{
		Del_Tree(tr->left);
		Del_Tree(tr->right);
		delete tr;
		tr=NULL;
	}
}

int Depth(Ttree *&tr,int aa)
{

}

void main()
{
	int n,a,d;
	Ttree *tree=NULL;
	fscanf(f,"%d",&n);
	Create(n,tree);
	printf("Vvedite uzel:\n");
	scanf("%d",&a);
	d=Depth(tree,a);
	fprintf(g,"%d ",d);
	Del_Tree(tree);
	fcloseall();
}
Roman-S вне форума Ответить с цитированием
Старый 19.04.2008, 16:18   #2
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Цитата:
Сообщение от Roman-S Посмотреть сообщение
Нужно написать функцию Depth.
Ну так добавьте к struct Ttree указатель на родительский узел и будете потом проходить в обратном порядке, пока не дойдёте до верха.

Последний раз редактировалось B_N; 19.04.2008 в 16:24.
B_N вне форума Ответить с цитированием
Старый 23.04.2008, 17:53   #3
Roman-S
 
Регистрация: 22.02.2008
Сообщений: 8
По умолчанию

Цитата:
Сообщение от B_N Посмотреть сообщение
Ну так добавьте к struct Ttree указатель на родительский узел и будете потом проходить в обратном порядке, пока не дойдёте до верха.
Лучше ничего не придумал? Нельзя нарушать структуру дерева. Нужно именно дерево, а не циклический граф.

Последний раз редактировалось Roman-S; 23.04.2008 в 18:03.
Roman-S вне форума Ответить с цитированием
Старый 23.04.2008, 19:08   #4
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Цитата:
Сообщение от Roman-S Посмотреть сообщение
Лучше ничего не придумал? Нельзя нарушать структуру дерева. Нужно именно дерево, а не циклический граф.
Во-первых, не помню, когда это мы перешли на "ты"
Во-вторых, перед тем, как грубить, нужно было немного подумать и догадаться, что двусвязные списки вводят, в том числе, не для изменения структур данных, а для оптимизации вычислений. Посмотрите, чем отличается двусвязное дерево от обычного и от циклического графа.
Наконец, раз Вы и так всё лучше знаете, проходите своё дерево рекурсивно и не отнимайте время.
B_N вне форума Ответить с цитированием
Старый 24.04.2008, 14:24   #5
Roman-S
 
Регистрация: 22.02.2008
Сообщений: 8
По умолчанию

Уже сделал, спасибо.
Roman-S вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Бинарное исправление звука DaRKSPiRT Общие вопросы C/C++ 2 01.09.2008 11:53
Очередь, нид хэлп Roman-S Общие вопросы C/C++ 1 15.03.2008 23:40
Бинарное дерево g0liath Помощь студентам 2 16.02.2008 23:54
ХЭЛП gemini1 Фриланс 1 15.10.2007 18:47
хэлп zinnyrik БД в Delphi 0 17.05.2007 15:25