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

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

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

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

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

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

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

1
Эксперт С++
 Аватар для Nameless One
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
16.04.2012, 08:15
Лучший ответ Сообщение было отмечено 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.04.2012, 08:15
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru