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

Создать бинарное дерево с типом узлов enum

15.04.2012, 18:20. Показов 1559. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
нужно создать бинарное дерево с типом узов enum
как будет выглядить структура и создание такого дерева?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.04.2012, 18:20
Ответы с готовыми решениями:

Построить бинарное дерево, сделать обход, подсчитать число узлов.
Дана последовательность. Построить бинарное упорядоченное дерево, сделать обход дерева, подсчитать...

Для каждого уровня вывести значения узлов слева направо (бинарное дерево)
Написал класс для дерева, дальше туплю сам класс: https://pastebin.com/82T8vPL9 мейн:...

Исходное бинарное дерево превратить в бинарное дерево поиска, при этом сохранив его структуру
Помогите, не могу понять!( Нужно исходное бинарное дерево превратить в бинарное дерево поиска, при...

Создать бинарное дерево
Есть обычное дерево. Узел описывается struct nod int Value; int Number_Of_Sons; nod *Son ...

1
Эксперт С++
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
16.04.2012, 08:15 2
Лучший ответ Сообщение было отмечено rewad6 как решение

Решение

Вот пример для бинарного дерева поиска:

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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#include <stdio.h>
#include <stdlib.h>
 
enum item
{
    ITEM1, ITEM2, ITEM3
};
 
struct node
{
    enum item item;
    struct node* left;
    struct node* right;
};
 
struct bin_tree
{
    struct node* root;
};
 
void init(struct bin_tree*);
void insert(struct bin_tree*, enum item);
int member(const struct bin_tree*, enum item);
void destroy(struct bin_tree*);
 
#define TEST(EXPR) printf(#EXPR ": %s\n", ((EXPR) != 0 ? "true" : "false"))
 
int main(void)
{
    enum item items[] = {ITEM2, ITEM1, ITEM2};
    size_t i;
    struct bin_tree tree;
    
    init(&tree);
    for(i = 0; i < sizeof(items) / sizeof(*items); ++i)
        insert(&tree, items[i]);
 
    TEST(member(&tree, ITEM1));
    TEST(member(&tree, ITEM2));
    TEST(member(&tree, ITEM3));
    
    destroy(&tree);
 
    exit(0);
}
 
 
void init(struct bin_tree* tree)
{
    tree->root = NULL;
}
 
struct node* insert_node(struct node* node, enum item item)
{
    if(node == NULL)
    {
        node = malloc(sizeof(struct node));
        node->left = node->right = NULL;
        node->item = item;
    }
    else if(item < node->item)
        node->left = insert_node(node->left, item);
    else if(item > node->item)
        node->right = insert_node(node->right, item);
    return node;
}
 
void insert(struct bin_tree* tree, enum item item)
{
    tree->root = insert_node(tree->root, item);
}
 
int member_node(const struct node* node, enum item item)
{
    if(node == NULL)
        return 0;
    if(item < node->item)
        return member_node(node->left, item);
    if(item > node->item)
        return member_node(node->right, item);
    return 1;
}
 
int member(const struct bin_tree* tree, enum item item)
{
    return member_node(tree->root, item);
}
 
void destroy_node(struct node* node)
{
    if(node != NULL)
    {
        destroy_node(node->left);
        destroy_node(node->right);
        free(node);
    }
}
 
void destroy(struct bin_tree* tree)
{
    destroy_node(tree->root);
    tree->root = NULL;
}
Конечно, не все так хорошо с абстрактностью, как этого бы хотелось, но для примера пойдет
0
16.04.2012, 08:15
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.04.2012, 08:15
Помогаю со студенческими работами здесь

Создать бинарное дерево
Ребята, помогите с такое задачей : нужно написать ф-цию для построения бинарного дерево...

Создать бинарное дерево
Помогите пожалуйста! Создать бинарное дерево и функции добавления, печати, сложения, сравнения

Преобразовать идеальное бинарное дерево в бинарное дерево поиска
Всем привет, я создал идельное бинарное дерево и написал к нему функции. Как мне теперь можно...

Как создать бинарное дерево
Я не могу понять как создать бинарное дерево помогите пожалуйста

Бинарное дерево создать функцию
Как переделать функцию для бинарного дерева int SumDigit(char *str) { int sum = 0; for (int...

Создать сортированное бинарное дерево
Создать сортированное бинарное дерево. Разработать рекурсивную процедуру подсчета положительных и...


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

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