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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.06.2015, 16:05   #1
Sterben
Форумчанин
 
Аватар для Sterben
 
Регистрация: 01.03.2015
Сообщений: 118
По умолчанию Поиск минимального элемента в дереве (СИ)

Код:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
struct node {
struct node *left;
struct node *right;
struct node *middle;
int info;};
//функция обхода
void show (node *&tree)
{
    if(tree != NULL)
    {
        show(tree->left);
        printf("%d",tree->info);
        show(tree->middle);
        show(tree->right);

    }
}
//функция Создание корня дерева;
void add_node (int info,node *&Mytree)
{
    if(NULL == Mytree)
    {
        Mytree = (struct node*)malloc(sizeof(struct node));
        Mytree ->info = info;
        Mytree ->left =  NULL;
        Mytree -> right = NULL;
        Mytree -> middle = NULL;
    }
    else {
    if(info<Mytree->info)
    {
        if(Mytree->left!=NULL)add_node(info,Mytree->left);
        else
        {
            Mytree ->left = (struct node*)malloc(sizeof(struct node));
            Mytree ->left ->left = NULL;
            Mytree ->left ->right = NULL;
            Mytree ->left ->middle= NULL;
            Mytree->left  ->info=info;
        }
    }
    if(info>Mytree->info)
    {
        if(Mytree->right!=NULL)add_node(info,Mytree->right);
            else
        {
            Mytree -> right = (struct node*)malloc(sizeof(struct node));
            Mytree -> right -> left = NULL;
            Mytree -> right -> right = NULL;
            Mytree -> right -> middle = NULL;
            Mytree -> right -> info = info;
        }
    }
    if(info == Mytree->info)
    {
        if(Mytree->middle!=NULL)add_node(info,Mytree->middle);
        else
        {
            Mytree -> middle = (struct node*)malloc(sizeof(struct node));
            Mytree -> middle ->middle = NULL;
            Mytree -> middle ->right = NULL;
            Mytree -> middle ->left = NULL;
            Mytree -> middle->info = info;
        }

}    }
}
//Поиск минимального значения в дереве
int Minimum(node *&Mytree)
{
   if(Mytree->right!=NULL){
    return Minimum(Mytree->right);
   }else{
       printf("MIN:%d",Mytree->info);
   return Mytree->info;
   }
}
int main(){
    int i,n,e;
    printf("input how many elements you want write: ");
    scanf("%d",&n);
struct node *tree = NULL;
for(i = 0;i<n;i++)
{
    printf("input number: ");
    scanf("%d",&e);
    add_node(e,tree);
}
show(tree);
Minimum(tree);
getch();
return 0;
}
как исправить?реализовать минимальный поиск в правом под дереве

Последний раз редактировалось Sterben; 03.06.2015 в 16:12.
Sterben вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск уровня элемента в дереве (PROLOG) catechum3n Помощь студентам 0 15.05.2015 23:05
поиск минимального и максимального элемента apelsun Общие вопросы Delphi 3 10.11.2012 00:09
Поиск элемента в дереве Фенвика. kdee Помощь студентам 0 28.01.2012 17:29
Поиск минимального элемента в stringgrid igabenu Общие вопросы Delphi 3 27.02.2011 19:03
Поиск минимального элемента в матрице F1eCSo Помощь студентам 0 04.02.2010 17:20