Нисходящий обход дерева
Добавлено: 20 май 2010, 21:17
Здравствуйте люди добрые, срочно требуеться помощь с обходом дерева. нужен нисходящий обход. Корень-левыйсын-правыйсын, надеюсь на вашу помощь, сам пытался както рекурсивно решить ету проблему, но чттото ничего не получилось(
вот построение самого дерева
вот построение самого дерева
Код: Выделить всё
#include <iostream>
#include <conio.h>
#include <stdio.h>
typedef struct tree {
int number; // номер узла
int info; // инфо часть узла
int ChildCount; // количество детей узла
tree* Children; // указатель на массив детей
} tree;
int nodecount = 1;
int count = 0;
tree current, temp;
void filltree(tree* node)
{
int child;
node->number = nodecount++;
printf("you are in the top number %d!\nEnter info part :", node->number);
scanf("%d", &node->info);
printf("Enter amount of children : ");
scanf("%d", &child);
if (child > 0){
node->ChildCount = child;
node->Children = new tree[child];
for (int i = 0; i < child; ++i){
filltree(&node->Children[i]);
}
} else {
node->ChildCount = 0;
node->Children = NULL;
}
}
void releasetree(tree* node){
if (node->ChildCount > 0){
for (int i = 0; i < node->ChildCount; ++i){
releasetree(&node->Children[i]);
}
delete [] node->Children;
}
}
void detour (tree* node){
здесь у меня глухо(
}
void menuprint(void) {
printf("1. Make tree\n");
printf("2. Detour\n");
printf("3. Exit\n");
}
void menuwork(tree* node) {
char c;
while (c != 3) {
system("cls");
menuprint();
c = getch();
switch (c) {
case '1' : printf("Warning!!! enter only one number at one point!\n");
filltree(node);
printf("Successful!!!\n");
getch();
break;
case '2' : detour(node);break;
case '3' : ;return;
}
}
}
void main(void){
tree node;
menuwork(&node);
releasetree(&node);
}