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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.12.2013, 16:51   #1
intnower
Новичок
Джуниор
 
Регистрация: 12.01.2012
Сообщений: 2
По умолчанию Деревья

Всем добрый день! Имеется такое задание :
а) вставляет узел с записью Е в дерево, если ранее такой не было;
b) удалить ее, если она уже существует.
Также есть функции, которые добавляют звенья в дерево, обход и т.д.
Помогите, пожалуйста, с заданием.Спасибо.
PHP код:
#include <stdio.h>
#include <conio.h>
#include <iostream>
using namespace std;
struct derevo
{
    
derevo *left,*rite//левое и правое поддерево
    
int x
};
 
/*ФУНКЦИЯ ДОБАВЛЕНИЯ ЗВЕНА В ДЕРЕВО*/
void dobav(int x,derevo *&zveno//Функция добавления звена в дерево
{
    if (
NULL==zveno)  // Если дерева нет, то создаем корень
    
{
        
zveno=new derevo//Выделяем память под звено дерева
        
zveno->x=x//Записываем данные в звено
        
zveno->left=zveno->rite=NULL//Подзвенья инициализируем пустотой во избежание ошибок
    
}
 
                   if (
x<zveno->x)   //Если нововведенный элемент x меньше чем элемент x из корня дерева, уходим влево
                      
{
                          if (
zveno->left!=NULLdobav(x,zveno->left); //При помощи рекурсии помещаем элемент на свободный участок
                          
else //Если элемент получил свой участок, то
                          
{
                              
zveno->left=new derevo;  //Выделяем память левому подзвену. Именно подзвену, а не просто звену
                              
zveno->left->left=zveno->left->rite=NULL//У левого подзвена будут свои левое и правое подзвенья, инициализируем их пустотой
                              
zveno->left->x=x//Записываем в левое подзвено записываемый элемент 
                          
}
                      }
                 
                    if (
x>zveno->x)   //Если нововведенный элемент x больше чем элемент x из корня дерева, уходим вправо
                      
{
                          if (
zveno->rite!=NULLdobav(x,zveno->rite); //При помощи рекурсии помещаем элемент на свободный участок
                          
else //Если элемент получил свой участок, то
                          
{
                              
zveno->rite=new derevo;  //Выделяем память правому подзвену. Именно подзвену, а не просто звену
                              
zveno->rite->left=zveno->rite->rite=NULL//У правого подзвена будут свои левое и правое подзвенья, инициализируем их пустотой
                              
zveno->rite->x=x//Записываем в правое подзвено записываемый элемент 
                          
}
                      }
        
}
 
/*ОБХОД В ПЯМОМ ПОРЯДКЕ (НИСХОДЯЩИЙ ОБХОД)*/
 
void pram_ob (derevo *&svob)
{
    if (
NULL==svob)    return;    //Если дерева нет, выходим
   
    
printf("%d\n",svob->x); //Посетили узел
    
pram_ob (svob->left); //Обошли левое поддерево
    
pram_ob (svob->rite); //Обошли правое поддерево 
    
 
}
 
int main ()
{
    
int x//Некоторые данные
    
derevo *zveno=NULL//Указатель на нашу структуру. Инициализируем во избежание ошибок
 
  
for (int i=0;i<7;i++) //В дереве будет 7 узлов
  
{
      
printf("X = "); scanf("%d",&x); //Ввели X с клавиатуры
      
dobav(x,zveno); //Добавили X в дерево
  
}
 
  
pram_ob (zveno); //Обошли дерево и показали его звенья в линейном порядке
  
getch();
return 
0;} 

Последний раз редактировалось intnower; 09.12.2013 в 21:28.
intnower вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Деревья на С++ nani94 Visual C++ 1 03.04.2013 23:07
Деревья nani94 Паскаль, Turbo Pascal, PascalABC.NET 1 20.03.2013 21:04
Деревья С++ stud1 Помощь студентам 5 30.11.2012 00:12
Деревья Си++ СветОК Общие вопросы C/C++ 1 25.05.2012 07:52
Деревья (С++) GripEnemy Помощь студентам 0 22.04.2012 17:55