Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
0 / 0 / 0
Регистрация: 05.11.2015
Сообщений: 30
1

Бинарные деревья

01.04.2016, 10:49. Просмотров 466. Ответов 4
Метки нет (Все метки)

1)Написать программу подсчета числа вершин в бинарном дереве
2)Написать программу копирования одного бинарного дерева в другое
3)Написать программу замены одного бинарного дерева на другое
Помогите написать одну из программ на ваш выбор,т.к. у меня это вызывает затруднения.
Вот код программы задающий бинарное дерево,нужно только вставить реализацию одной из вышеуказанных операций.
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
 // 2.cpp : Defines the entry point for the console application.
//
 
#include "stdafx.h"
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <iostream>
typedef struct tag_data {
 char name[100];
} DATA;
typedef struct tag_tree {
 DATA data;
 struct tag_tree* left, *right;
} TREE;
TREE* root = NULL;
typedef enum tag_type {RIGHT, LEFT} TYPE;
TREE* add_node(TREE* node,char* name, TYPE type = LEFT)
{
 TREE* new_node = (TREE *)malloc(sizeof(TREE));
 if(type == LEFT && node != NULL) node->left = new_node;
 else if(node != NULL) node->right = new_node;
 strcpy(new_node->data.name,name);
 new_node->left = NULL;
 new_node->right = NULL;
 return new_node;
}
void show_next(TREE* node,int off)
{
 if(node != NULL)
 {
 for(int i=0;i < off;i++) putchar(' ');
 printf("%s\n",node->data.name);
 show_next(node->left,off);
 show_next(node->right,off+1);
 }
}
void show_tree()
{
 if(root != NULL)
 {
 printf("%s\n",root->data.name);
 show_next(root->left,0);
 show_next(root->right,1);
 }
}
void del_next(TREE* node)
{
 if(node != NULL)
 {
 del_next(node->left);
 del_next(node->right);
 printf("node %s - deleted\n",node->data.name);
 free(node);
 }
}
void del_tree()
{
 if(root != NULL)
 {
 del_next(root->left);
 del_next(root->right);
 printf("node %s - deleted\n",root->data.name);
 free(root);
 }
}
int _tmain(int argc, _TCHAR* argv[])
{
setlocale(LC_ALL,"Rus");
root = add_node(NULL,"Root");
TREE* current = add_node(root,"File 1",LEFT);
current = add_node(current,"File 2",LEFT);
current = add_node(root,"Folder 1",RIGHT);
current = add_node(current,"File 11",LEFT);
current = add_node(current,"File 12",LEFT);
current = add_node(root->right,"Folder 2",RIGHT);
current = add_node(current,"File 21",LEFT);
show_tree();
del_tree();
root = NULL;
return 0;
}
Заранее спасибо!)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.04.2016, 10:49
Ответы с готовыми решениями:

Бинарные деревья
Выведите номера вершин, у которых количество потомков в левом поддереве не равно количеству...

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

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

Бинарные деревья
Здравствуйте господа. Очень нуждаюсь в вашей помощи по бинарным деревьям. Собственно, имеется...

4
Jesus loves me
Эксперт С++
5096 / 3110 / 351
Регистрация: 12.12.2009
Сообщений: 7,853
Записей в блоге: 2
01.04.2016, 12:44 2
Цитата Сообщение от Vladislav_97 Посмотреть сообщение
Написать программу подсчета числа вершин в бинарном дереве
у тебя уже есть show_tree()/show_next(), слегка их подправить и будет подсчет.
Цитата Сообщение от Vladislav_97 Посмотреть сообщение
Написать программу копирования одного бинарного дерева в другое
аналогично
Цитата Сообщение от Vladislav_97 Посмотреть сообщение
Написать программу замены одного бинарного дерева на другое
аналогично

Основное, что требуется для всех этих операций - это осуществить обход дерева, он у тебя уже сделан.
0
0 / 0 / 0
Регистрация: 05.11.2015
Сообщений: 30
01.04.2016, 13:38  [ТС] 3
Ну будь добор,помоги исправить,чтобы работало!
0
Jesus loves me
Эксперт С++
5096 / 3110 / 351
Регистрация: 12.12.2009
Сообщений: 7,853
Записей в блоге: 2
01.04.2016, 14:10 4
Цитата Сообщение от Vladislav_97 Посмотреть сообщение
помоги исправить
покажи свои наработки и что там надо исправить
0
zer0mail
01.04.2016, 16:15     Бинарные деревья
  #5

Не по теме:

У ТС куча сообщений в разделе С++, а до сих пор не научился форматировать код. Наверное, он необучаемый :(

0
01.04.2016, 16:15
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.04.2016, 16:15
Привет! Вот еще темы с ответами:

Бинарные деревья С++
Добрый день! Дали такое задание на лабораторную работу. кое-что получилось, а в остальном прошу...

Бинарные деревья
Вот задачка: Для заданного бинарного дерева поиска проверить условие: • для каждой вершины...

Бинарные деревья
Здравствуйте! Подскажите, правильно ли написано правое удаление вершины дерева? if(tree1-&gt;Right){...

Бинарные деревья
Подсчитать количество элементов на n-уровне бинарного дерева. Подскажите как можно решить...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.