1

Тема: Бінарне дерево пошуку

Доброго дня, потрібна допомога в написанні програми, суть завдання - відобразити за допомогою бінарного дерева речення: “Білий сніг покриває чорну землю”. Ключі підібрати самостійно. Вивести результат. Видалити вузол із словом “чорну”.
Я написав код де 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(); 
}