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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.06.2015, 18:15   #1
Амэ
 
Регистрация: 13.02.2014
Сообщений: 9
По умолчанию Бинарное дерево

В общем, само задание: создать бинарное дерево с инфиксным прохождением и для заданного узла найти его сыновей,братьев и родителя.
Дерево создать получилось и пройти тоже, а вот с поиском проблема >_<
Подскажите, пожалуйста, как показать его сыновей и т.д.
Код:
#include "stdafx.h"
#include <deque> 
#include<iostream>
#include<fstream>
#include<algorithm>
using namespace std;
//Наша структура
struct node
{
    int info; //Информационное поле
    node *l, *r;//Левая и Правая часть дерева
};
 
node * tree=NULL; //Объявляем переменную, тип которой структура Дерево
 
/*ФУНКЦИЯ ЗАПИСИ ЭЛЕМЕНТА В БИНАРНОЕ ДЕРЕВО*/
void push(int a,node **t)
{
    if ((*t)==NULL) //Если дерева не существует
    {
        (*t)=new node; //Выделяем память
        (*t)->info=a; //Кладем в выделенное место аргумент a
        (*t)->l=(*t)->r=NULL; //Очищаем память для следующего роста
        return; //Заложили семечко, выходим
    }
       //Дерево есть
        if (a>(*t)->info) push(a,&(*t)->r); //Если аргумент а больше чем текущий элемент, кладем его вправо
        else push(a,&(*t)->l); //Иначе кладем его влево
}
 
/*ФУНКЦИЯ ОТОБРАЖЕНИЯ ДЕРЕВА НА ЭКРАНЕ*/
void print (node *t) 
{
    if (t==NULL) return; //Если дерево пустое, то отображать нечего, выходим
    else //Иначе
    {
   
    std::cout<<t->info<<std::endl; //И показываем элемент
    print(t->l);
	print(t->r);
    }
	    
}
 
void main ()
{   
    int n; //Количество элементов
    int s;//Число, передаваемое в дерево
	int v;// Высота
	int degree; // степень графа 
    cout<<"Type number of elements  ";
    cin>>n; //Вводим количество элементов
	if (n%2!=1) {
		v = n/2;
	}
	else { 
		v = n/2 -0,5;};
		cout<<"Height of the tree = ";
		cout<<v;
		cout<<"\n";
		degree = n-1;
		cout<<"Degree of the tree =  ";
		cout<<degree;
		cout<<"\n";

 
    for (int i=0;i<n;++i)
    {  
    cout<<"\nType number ";
    cin>>s; //Считываем элемент за элементом
   
    push(s,&tree); //И каждый кладем в дерево
    }
    cout<<"Your tree is:\n";
    print(tree);
   system("pause");      
}
Амэ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
бинарное дерево NataliaShipaeva Помощь студентам 1 17.06.2013 15:32
Бинарное дерево С++ Tclass Общие вопросы C/C++ 10 06.06.2013 09:27
Бинарное дерево Alexsandr Visual C++ 0 05.06.2012 18:30
Бинарное дерево С++ Voxa7 Помощь студентам 0 17.05.2010 18:59
Бинарное дерево Lazio Общие вопросы C/C++ 2 10.09.2009 20:31