1 Востаннє редагувалося AndriyVP (24.03.2017 06:55:36)

Тема: Відобразити за допомогою бінарного дерева речення

Доброго дня, суть програми в тому щоб відобразити за допомогою бінарного дерева речення: “Білий сніг покриває чорну землю”. Ключі підібрати самостійно. Вивести результат. Видалити вузол із словом “чорну”.
Я думав зробити програму використовуючи п'ять ключів, відповідно на кожне слово а потім видалити один з них, проблема в тому, що я не знаю як присвоїти ключеві значення слова, адже це по суті стрічка?
І ще питання, як правильно прикріплювати код на даному форумі, прикріпити файл чи написати сам код в описі теми?

#include <iostream>
#include<conio.h>
#include<stdio.h>
#include<string.h>
using namespace std;
using std::cin;
using std::endl;
using std::cout;

struct node
{
    char info;
    node *l, *r;
};

node *root=NULL;

char s0[]={"white"};
char s1[]={"snow"};
char s2[]={"cover"};
char s3[]={"black"};
char s4[]={"ground"};
/*//Ф-я запису елемента в дерево*/
void push(char a,node **t)
{
    if ((*t)==NULL) //якщо дерева не існує
    {
        (*t)=new node; //виділяємо пам*ять
        (*t)->info=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) 
    { 
    print(t->l); 
    if (t->info) cout<< t->info<<' '; 
    print(t->r); 
    }
    /* 
    if (t==NULL) return; //якщо пусте Дерево то немає чого відображати
    else //інакше
    print(root->l);
    if(root->info)
    cout<<root->info;
    print(root->r);
    //за допомогою рекурсії ідемо в праве піддерево
    */
}
void Delete (node **d, int k) 
{ 
    node *q; 
    if (*d == NULL) cout<< "No such key\n"; 
    else 
    if (k<(**d).info) Delete(&((**d).l), k); 
    else 
    if (k>(**d).info) Delete(&((**d).r), k); 
    else { 
    q = *d; 
    if ((*q).r == NULL) { *d = (*q).l; delete q; } //якщо правий нуль видалити лівий
    else 
    if ((*q).l == NULL) { *d = (*q).r; delete q; } //і навпаки
    } 
}
int main ()
{   
     int A[]={53,50,51,52,49};
     cout<<"Our digits:\n";
    for (int i=0;i<5;++i)
    {
    cout<<A[i]; //виводимомо елемент за елементом
    push(A[i],&root); //кожний елемент кладемо в дерево
    }
    cout<<" Our tree:\n";
    print(root);
    Delete(&root,52); 
    cout << '\n'; 
    cout << "tree 2\n"; 
    print(root); 
    getch();       
}
Post's attachments

laba5.cpp 1.76 kb, 361 downloads since 2017-03-23 

2

Re: Відобразити за допомогою бінарного дерева речення

Сам код у тексті повідомлення, обрамлений тегом code.