Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 26.04.2017
Сообщений: 58
1

Написать программу, выполняющую построение и вывод бинарного дерева поиска на экран

26.04.2017, 16:51. Показов 6616. Ответов 0

Author24 — интернет-сервис помощи студентам
Добрый день. Помогите пожалуйста с лабораторной, использую dev c++ так как он указан в методичке.

"Задать последовательность чисел. Написать программу, выполняющую построение и вывод бинарного дерева поиска на экран. Для построенного дерева вывести на экран все элементы, находящиеся на k-ом уровне, где число k задается с клавиатуры. После выполнения программы очистить память, занятую древовидной структурой."

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#include <stdio.h> 
#include <stdlib.h> 
#include <conio.h> 
#include <malloc.h> 
#include <Windows.h> 
typedef struct binarytree 
{ 
int Data; //поле данных 
binarytree * Left; //указатель на левого потомка 
binarytree * Right; //указатель на правого потомка 
} 
BinaryTree;
//создание бинарного дерева 
void Create(BinaryTree** p, int x) 
{ 
if(!(*p))//если указатель на корень дерева не равен NULL 
{ 
BinaryTree* pnew = (BinaryTree*) 
malloc(sizeof(BinaryTree));// выделяем память 
pnew->Data = x;//заносим значение 
pnew->Left = pnew->Right = NULL; 
*p = pnew; 
} 
else 
{ 
if((*p)->Data> x) 
Create(&((*p)->Left), x); 
else 
Create(&((*p)->Right), x); 
} 
} 
/*Вывод двоичного дерева на экран*/ 
void Vyvod (BinaryTree **p,int l) 
{ 
int i; 
if (*p!=NULL) 
{ 
Vyvod (&((*p)->Right),l+1); 
for (i=0; i<l; i++) 
printf(" "); 
printf("%d\n",(*p)->Data); 
Vyvod (&((*p)->Left),l+1); 
} 
}
/*Проверка пустоты дерева*/ 
bool empty_tree(BinaryTree * Node) 
{ 
if(Node==NULL) return true; 
else return false; 
} 
//освобождение памяти, выделенной под бинарное дерево 
BinaryTree* Delete_BinaryTree(BinaryTree* Node){ 
if (Node != NULL) 
{ 
Delete_BinaryTree(Node->Left); 
Delete_BinaryTree(Node->Right); 
free(Node); 
} 
return NULL; 
} 
int main() 
{ 
SetConsoleCP(1251); 
SetConsoleOutputCP(1251); 
int i,n,temp; 
BinaryTree * Root; 
Root=NULL; 
printf("Число элементов дерева\t"); scanf("%d",&n); 
for(i=0;i<n;i++) 
{ 
scanf("%d",&temp); 
Create(&Root,temp); 
} 
Vyvod(&Root,0); 
if(empty_tree(Root)) 
{ 
printf("\nДерево пусто!\n"); 
getch(); 
return 0; 
}
printf("Какой уровень вывести?\t"); scanf("%d",&n); 
Root=Delete_BinaryTree(Root); 
if(empty_tree(Root)) 
printf("\nПамять очищена полностью!\n"); 
getch(); 
return 0; 
}
Но не могу понять как выполнить "Для построенного дерева вывести на экран все элементы, находящиеся на k-ом уровне, где число k задается с клавиатуры." Не пойму как подсчитать уровни и вывести необходимый. Спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.04.2017, 16:51
Ответы с готовыми решениями:

Вывод списка всех листьев бинарного дерева поиска
Нужно реализовать бинарное дерево поиска и вывести все его вершины, не имеющие потомков. Само...

Бинарные деревья. Вывод потомков для каждого из узлов бинарного дерева поиска
Здравствуйте, уважаемые форумчане! Продолжая изучать бинарные деревья, решил подумать о выгодности...

Создание бинарного дерева и вывод на экран
Пока не добавил ввод с клавиатуры, тк застрял на ошибках cpp.c:13:17: error: expected ‘;’, ‘,’ or...

Запись массива в виде бинарного дерева и вывод его на экран!
Задача: Зарандомить массив с 30 ел... от -100 до 100, создать бинарное дерево использую дан....

0
26.04.2017, 16:51
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.04.2017, 16:51
Помогаю со студенческими работами здесь

Вывод бинарного дерева на экран в виде "дерева"
основная задача: подсчет количества листьев. проблема: при просмотре хочу выводить бин. дерево, в...

Написать функцию копирования бинарного дерева и вывода его на экран
Tree34°. Дан указатель P1 на корень непустого дерева. Создать копию данного дерева и вывести...

В рабочей программе добавить для дерева бинарного поиска нахождение отрицательных значений узлов дерева
Полностью готовая программа, но что дописать в мейне чтобы он выводил произведение отрицательных...

Построение бинарного дерева на основе не бинарного
В лабораторной работе есть такое задание: Создайте процедуру построения бинарного дерева на основе...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru