Имеется программа для вывода дерева,но оно не выводится,нужно вызвать функцию показа дерева,передать ей указатель на корень,который рекурсивно пройдет по всему дереву и выведет его на экран,а как это сделать я не знаю,помогите,пожалуйста,кому не трудно...
| Код | #define _CRT_SECURE_NO_WARNINGS #include "windows.h" #include "stdio.h" #include "conio.h" #include "math.h" #include <locale.h> struct tree //дерево как структура { int info; //информационнное поле tree *left, *right; //указатель на следующие элементы }; typedef tree* ptree; tree* createtree(int m) //заполнение дерева { if (!m) return NULL; tree* root = new tree; printf("Введите элементы\n"); scanf_s("%d", &root->info); root->left = createtree(m / 2); root->right = createtree(m - (m / 2) - 1); return root; } int showtree(tree *root) // лпк обход { if (!root) { printf("введена полная фигня и такого дерева нет,извольте повторить,уважаемый \n"); return 0; } if (root->left) showtree(root->left); if (root->right) showtree(root->right); return 0; } void PrintTreeLKP(ptree root, int deep) //демонстрация дерева { if (root == NULL) return; PrintTreeLKP(root->left, deep + 1); for (int i = 0; i < deep; i++) printf(" "); printf("%d\n", root->info); PrintTreeLKP(root->right, deep + 1); } int deletetree(tree *root) //удаление дерева { if (!root) { printf("дерева не существует\n"); return 0; } delete[] root; return 0; } int main() { int m = 0; //число элементов в дереве int n = 0; //нижняя граница интервала int k = 0; //верхняя граница интервала setlocale(LC_ALL, "Russian"); printf("Задание:Написать программу, обеспечивающую работу со сбалансированным деревом:\n"); //вывод задания printf("1.Создание нового дерева из n элементов\n"); printf("2.Просмотр дерева, очистка дерева\n"); printf("3.Копирование инф. полей со значениями в диапазоне от n до k в массив\n"); printf("4.Просмотр и очистку этого массива\n\n"); printf("Введите количество элементов дерева:\n"); scanf("%d", &m); tree* root = createtree(m); ptree treeRoot = NULL; printf("Ваше дерево, ЛПК обход:\n"); PrintTreeLKP(treeRoot,0); _getch(); return 0; }
|
|