Тема: Бінарне дерево пошуку
Доброго дня, потрібна допомога в написанні програми, суть завдання - відобразити за допомогою бінарного дерева речення: “Білий сніг покриває чорну землю”. Ключі підібрати самостійно. Вивести результат. Видалити вузол із словом “чорну”.
Я написав код де 5 ключів і програма видаляє вказаний, але я не можу зробити це зі словами, пробував зробити масив стрічок і кожну додавати в дерево але не виходить. Підкажіть як правильно це зробити?
#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
{
int info;
char A[256];
node *l, *r;
};
node *root=NULL;
/*char s0[]={"white"};
char s1[]={"snow"};
char s2[]={"cover"};
char s3[]={"black"};
char s4[]={"ground"};
*/
/*//Ф-я запису елемента в дерево*/
void push(int 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 pushchar(char b,node **t)
{
if((*t)==NULL)
{
(*t)=new node;
(*t)->A[256]=b;
(*t)->l=(*t)->r=NULL;
return;
}
pushchar(b,&(*t)->l);
}
/*відображаємо дерево на екрані*/
void print (node *t)
{
if (t)
{
print(t->l);
if (t->info) cout« t->info«' ';
print(t->r);
}
}
void printchar (node *t)
{
if(t)
{
print(t->l);
if (t->A) cout«t->A«' ';
printchar(t->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 B[]={1,2,3,4,5};
char A[256]={"white","snow","cover","black","ground"};
cout«"Our digits:\n";
for (int i=0;i<5;++i)
{
cout«B[i]; //виводимомо елемент за елементом
push(B[i],&root); //кожний елемент кладемо в дерево
}
cout«" Our tree:\n";
print(root);
for (int i=0;i<=5;i++)
{
pushchar(A[i],&root);
}
printchar(root);
Delete(&root,4);
cout « '\n';
cout « "tree 2\n";
print(root);
getch();
}