- -
Дерево
(
http://forum.oszone.net/showthread.php?t=191306)
Дерево
Есть такое дерево
Код:
struct node
{
int data;
char data_s[256];
struct node *left, *right;
};
typedef struct node node;
void insert(node *new_leaf,node *root);
node *root=NULL;
node *new_leaf=NULL ;
node *c=NULL;
char temp[256];
void main(void)
{
printf(" Enter the elements of the tree (type 0 to exit) \n");
while(1)
{
scanf("%255s",temp);
if(*(temp)=='0')
break;
new_leaf=(node*)malloc(sizeof(node));
new_leaf->left=new_leaf->right = NULL;
new_leaf->data=strlen(temp);
sprintf(new_leaf->data_s,"%s",temp);
if( root == NULL)
root=new_leaf;
else
insert(new_leaf,root);
};
}
void insert(node *new_leaf,node *root)
{
if( new_leaf->data>root->data)
{
if( root->right == NULL)
root->right=new_leaf;
else
insert( new_leaf,root->right);
};
if( new_leaf->data <= root->data)
{
if( root->left == NULL)
root->left = new_leaf;
else
insert( new_leaf,root->left);
};
}
Вопрос такой: как вывести на екран все правые вершыни?
|
Код:
void show(struct node *usel)
{
if(!usel) return;
// show(usel->left);
printf("usel.data=%i, usel.data_s=%s\r\n", usel.data, usel.data_s);
show(usel->right);
}
|
Ета функцыя выведет только правиеправие вершыны. А если сначало на лево а потом на право???
|
Цитата:
Цитата svdanik
Ета функцыя выведет только правиеправие вершыны. А если сначало на лево а потом на право??? »
|
Вам нужно правую ветку распечатать? Если так то:
Код:
void show(struct node *usel)
{
if(!usel) return;
show(usel->left);
printf("usel.data=%i, usel.data_s=%s\r\n", usel.data, usel.data_s);
show(usel->right);
}
//вызываем
show(root->right); //передаём правую ветку
|
Вот задаю такие числа : 6,8,3,4,5
Мне надо чтобы вывело: 8, 4,5
|
Время: 18:00.
© OSzone.net 2001-