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

Программа на Бинарное дерево

14.11.2011, 12:28. Показов 3902. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть несколько задачек на данную тему, вот что-то пока, что никак не могу разобраться. У кого есть возможность напишите, чтоб по реальному примеру разобраться.
1. Бинарное дерево задано указателем на корень. Информационные поля узлов, входящих в состав де-рева, имеют тип int. Необходимо создать список, хранящий в порядке возрастания целые числа, заданные в листьях дерева.
2.Бинарное дерево, содержащее совокупность целых чисел, задано указателем на корень. Требуется сосчитать количество уровней в дереве и количество отдельных узлов в каждом из уровней. Результаты рас-чета оформить в виде таблицы из двух граф: «Номер уровня» и «Количество узлов в уровне».
3.Бинарное дерево задано указателем на корень. Необходимо, осуществляя обход дерева, построить два списка и заполнить их соответственно четными и нечетными числами из множества целых чисел, хра-нимых в дереве.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.11.2011, 12:28
Ответы с готовыми решениями:

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

Бинарное дерево. Удалить из дерева часть вершин так, чтобы оставшееся дерево стало пирамидой
Дано бинарное дерево. Удалить из дерева часть вершин так, чтобы оставшееся дерево стало пирамидой.

Бинарное дерево
Народ помогите. На С++ нада написать программу бинарного дерева Требования: 1. В программе должен быть шаблонный класс (template...

2
237 / 210 / 29
Регистрация: 08.06.2011
Сообщений: 467
14.11.2011, 17:17
Цитата Сообщение от cooller51190555 Посмотреть сообщение
1. Бинарное дерево задано указателем на корень. Информационные поля узлов, входящих в состав де-рева, имеют тип int. Необходимо создать список, хранящий в порядке возрастания целые числа, заданные в листьях дерева.
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
#include <stdio.h>
 
/* ==================== binary tree ==================== */
 
typedef int T;
typedef struct tnode *Treeptr;
#define cmp(a, b) ((a) <= (b))
 
typedef struct tnode { 
    T data;
    Treeptr left; 
    Treeptr right; 
} Treenode;
 
Treeptr talloc(void);
 
Treeptr addtree(Treeptr p, T data)
{
    if (p == NULL) {   
        p = talloc();
        p->data = data;
        p->left = p->right = NULL;
    } else if (cmp(data, p->data))
        p->left = addtree(p->left, data);
    else             
        p->right = addtree(p->right, data);
    return p;
}
 
#include <stdlib.h>
 
Treeptr talloc(void)
{
    return (Treeptr) malloc(sizeof(Treenode));
}
 
void traversal(Treeptr p, void (*visit)(T))
{
    if (p != NULL) {
        traversal(p->left, visit);
        visit(p->data);
        traversal(p->right, visit);
    }
}
 
void deltree(Treeptr p)
{
    if (p != NULL) {
        free(p->left);
        free(p->right);
        free(p);
    }
}
 
void treeprint(Treeptr p, char *fmt)
{
    if (p != NULL) {
        treeprint(p->left, fmt);
        printf(fmt, p->data);
        treeprint(p->right, fmt);
    }
}
/* ================ end of binary tree ================= */
 
#define MAXDEPTH  100
 
int depth = 0; 
int table[MAXDEPTH];
 
void count_nodes(Treeptr p)
{
    if (p != NULL) {
        if (depth < MAXDEPTH)
            table[depth]++;
        depth++;
        count_nodes(p->left);
        count_nodes(p->right);
        depth--;
    }
}
 
#define MAXSIZE  100
 
int even[MAXSIZE], *peven = even;
int odd[MAXSIZE], *podd = odd;
 
void process_number(int n)
{
    if (n & 1) {
        if (podd < odd + MAXSIZE)
            *podd++ = n;
    } else if (peven < even + MAXSIZE)
        *peven++ = n;
}           
 
int main()
{
    Treeptr root = NULL;
    int n, *p;
 
    while (printf("enter a number (0 to stop):\n") > 0
                && scanf("%d", &n) == 1 && n)
        root = addtree(root, n);
    putchar('\n');
    treeprint(root, "%d ");
 
    count_nodes(root);
    printf("\n\n");
    for (n = 0; table[n] != 0; n++) 
        printf("depth: %d, number of nodes: %d\n", n, table[n]);
 
    traversal(root, process_number);
    for (printf("\neven: "), p = even; p != peven; p++)
        printf("%d ", *p);
    for (printf("\nodd:  "), p = odd; p != podd; p++)
        printf("%d ", *p);
    putchar('\n');
 
    deltree(root);
    return 0;
}
дерево:
Code
1
2
3
4
5
6
7
8
     (8)
        /   \    
       /     \
     (4)     (12)
    /       /    \
  (2)     (10)    (15) 
 /   \    /  \       \ 
(1) (3)  (9) (11)    (16)
пример работы
Code
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
enter a number (0 to stop):
8
enter a number (0 to stop):
4
enter a number (0 to stop):
12
enter a number (0 to stop):
2
enter a number (0 to stop):
10
enter a number (0 to stop):
15
enter a number (0 to stop):
1
enter a number (0 to stop):
3
enter a number (0 to stop):
9
enter a number (0 to stop):
11
enter a number (0 to stop):
16
enter a number (0 to stop):
0
 
1 2 3 4 8 9 10 11 12 15 16
 
depth: 0, number of nodes: 1
depth: 1, number of nodes: 2
depth: 2, number of nodes: 3
depth: 3, number of nodes: 5
 
even: 2 4 8 10 12 16
odd:  1 3 9 11 15
Press any key to continue . . .
1
0 / 0 / 0
Регистрация: 06.05.2011
Сообщений: 34
14.11.2011, 20:03  [ТС]
Это на С или С++ мне просто на С++ необходимо....

Добавлено через 43 минуты
Всё гуд спасибо разобрался
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.11.2011, 20:03
Помогаю со студенческими работами здесь

Бинарное дерево
Помогите, пожалуйста. Осталась последняя задача в контрольной. Не знаю даже, как к ней подступиться. К проекту ПРИМЕР Btree ...

C++, Бинарное дерево
Привет. Можете помочь с заданием. Прочитал кучу теорию по бинарным деревьям. Сел делать вообще не получается. Вот задание. Разработать...

Бинарное дерево
Помогите исправить ошибку, компилятор ругается на 110 строку, не пойму почему( #include &lt;iostream&gt; #include &lt;cstdlib&gt; ...

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

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


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru