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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.04.2016, 08:39   #1
merick
Пользователь
 
Регистрация: 31.10.2015
Сообщений: 30
Вопрос Постройте и выведите на экран бинарное дерево. Найдите произведение элементов дерева, находящихся на уровне u

Построил дерево
Код:
# include <iostream>
# include <conio.h>
#include <clocale>
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,int u) 
{
    if (t==NULL) return; //Если дерево пустое, то отображать нечего, выходим
    else //Иначе
    {
    print(t->l,++u);//С помощью рекурсивного посещаем левое поддерево
    for (int i=0;i<u;++i) cout<<"|";
    cout<<t->info<<endl; //И показываем элемент
    u--;
    }
    print(t->r,++u); //С помощью рекурсии посещаем правое поддерево
}
 
void main ()
{   setlocale(LC_ALL,"RUS");
    int n; //Количество элементов
    int s; //Число, передаваемое в дерево
    cout<<"введите количество элементов  ";
    cin>>n; //Вводим количество элементов
 
    for (int i=0;i<n;++i)
    {
    cout<<"ведите число  ";
    cin>>s; //Считываем элемент за элементом
   
    push(s,&tree); //И каждый кладем в дерево
    }
    cout<<"наше дерево\n";
    print(tree,0);
    system("pause")`;       
}
Как задать условие для нахождения элементов дерева на уровне u? Все перепробовал ничего не получается.

Последний раз редактировалось merick; 09.04.2016 в 08:42.
merick вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как, имея бинарное дерево наглядно вывести его на экран? CorZet Общие вопросы Delphi 3 11.03.2020 14:33
Насчёт элементов в классе бинарное дерево поиска dvigyand Общие вопросы C/C++ 0 27.04.2013 16:53
Двоичное дерево поиска, количество элементов на каждом уровне Kayot027 Помощь студентам 2 22.01.2011 13:49
дана вещественная матрица размером N*N. вычислить произведение отрицательных элементов, находящихся над и IRINOK Помощь студентам 6 14.12.2010 22:44