Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
Vollan
0 / 0 / 0
Регистрация: 11.12.2016
Сообщений: 13
1

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

05.11.2017, 00:50. Просмотров 754. Ответов 1
Метки нет (Все метки)

Посчитать число вершин на n-ом уровне дерева T (корень считать вершиной нулевого уровня).
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.11.2017, 00:50
Ответы с готовыми решениями:

Бинарные деревья - В функции вывода каждый элемент рекурсивно ссылается на на своих потомков
есть структура бинарного дерева: struct tree {int key; tree*left,*right;}; и есть функция...

Бинарные файлы. Чтение в структурную переменную
В общем, есть такой вопрос, который скоро надо будет решать. Допустим, у меня есть текстовый файл...

Бинарные файлы, выбрать записи удовлетворяющие заданным условиям
Помогите написать программу Программа должна: 1. Создавать бинарный файл. 2. Добавлять запись в...

Реализовать АВЛ-деревья
Помогите алгоритмом на С

Как создавать бинарные файлы, какой программой это осуществляется?
Всем привет. Как создавать бинарные файлы, какой программой это осуществляется, и как читать их,...

1
Геомеханик
798 / 602 / 939
Регистрация: 26.06.2015
Сообщений: 1,409
06.11.2017, 07:03 2
Лучший ответ Сообщение было отмечено Vollan как решение

Решение

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
#include <stdio.h>
#include <malloc.h>
#define N 10
 
typedef struct node {
    struct node* left, *right;
    int val;
} node_t;
 
void tree_add(node_t** tr, int val);
void tree_clear(node_t* tr);
int  tree_count(FILE* _out, const node_t* tr, int n);
int  tree_height(const node_t* tr);
 
int main(void){
    int i, h;
    int  a[N] = { 5, 2, 3, 1, 8, 7, 9, -8, 4, 20 };
    node_t* T = NULL;
/*
         5 
       /   \
      2      8
    /  \    / \
   1    3  7   9
  /      \      \
-8        4      20
*/
    for(i = 0; i < N; ++i)
        tree_add(&T, a[i]);
 
    h = tree_height(T);
    printf("height: %d\n", h);
    for(i = 0; i < h; ++i)
        printf("\tcount: %d\n", tree_count(stdout, T, i));
    tree_clear(T);
    getchar();
    return 0;
}
 
//вставка
void tree_add(node_t** tr, int val){
    node_t* p = *tr;
    while(p != NULL){
        if(val < p->val){
            tr = &p->left;
            p  = p->left;
        } else if(val > p->val){
            tr = &p->right;
            p  = p->right;
        } else
            return;
    }
 
    if((p = (node_t*)malloc(sizeof(node_t))) != NULL){
        p->left = p->right = NULL;
        p->val  = val;
        *tr = p;
    }
}
 
//удаление всех
void tree_clear(node_t* tr){
    if(tr != NULL){
        if(tr->left != NULL)
            tree_clear(tr->left);
        if(tr->right != NULL)
            tree_clear(tr->right);
        free(tr);
    }
}
 
//число вершин на n-ом уровне дерева
int tree_count(FILE* _out, const node_t* tr, int n){
    int l, r;
    if((tr != NULL) && (n >= 0)){
        l = (tr->left  != NULL) ? tree_count(_out, tr->left,  n - 1) : 0;
        r = (tr->right != NULL) ? tree_count(_out, tr->right, n - 1) : 0;
 
        //для примера вывод
        if((_out != NULL) && (n == 0))
            fprintf(_out, "%d ", tr->val);
 
        return (l + r) + (n == 0);
    }
    return 0;
}
 
//высота дерева
int tree_height(const node_t* tr){
    int l, r;
    if(tr != NULL){
        l = (tr->left  != NULL) ? tree_height(tr->left)  : 0;
        r = (tr->right != NULL) ? tree_height(tr->right) : 0;
        return ((r > l) ? r : l) + 1;
    }
    return 0;
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.11.2017, 07:03

Бинарные файлы: Подсчитать количество вхождений в файл каждой из букв а, b, c, d, e, f
Здарствуйте уважаемые форумчани!! Помогите , как сделать с текстового файла -бинарный. Условие...

Бинарные файлы, стек вокруг переменной «paka1» был поврежден
#include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;string.h&gt; #include &lt;stdlib.h&gt; #pragma pack...

Динамические структуры данных: деревья
Задание Составить программу на языке Си для построения и обработки дерева общего вида или...


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

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

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