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

Функция подсчета степени дерева

30.03.2010, 14:54. Просмотров 1252. Ответов 0
Метки нет (Все метки)

Не буду выкладывать весь код,т.к. у всех взорвется мозг и там многа букв (программа интерактивная и там больше 300 строк )), но я никак не могу написать функцию для подсчета степени дерева, структура дерева и все самые важные созданные функции ниже:

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
typedef int node_t;
 
struct TreeNode {
    node_t data;
    struct TreeNode* lt;
    struct TreeNode* rt;
};
 
typedef struct TreeNode* tree_t;
 
tree_t create_tree(node_t a_data);
 
void print_data(tree_t a_tree);
void print_node(tree_t a_tree, int a_level);
 
int add_node(tree_t a_root, node_t a_data);


Тоесть ссылки на предыдщий элемент в дереве,как делают некоторые (что я считаю безобразием ), у меня нет,только на следующие справа и слева элементы.

Я уже написал несовсем работающую функцию для подсчета степени,она работает во всех случаях,кроме как когда дерево сильно ветвится,примерно понятно почему,но как исправить, я никак не пойму,помогите плииз)
Вот эта моя функция ( ГДЕ STEP2 - глобальная переменная,так что с этим проблем нет):

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
int stependva (tree_t a_root) {
int levo=0;
int pravo=0;
/* if (a_root == NULL) {
        return 0;
        printf ("a_root = NULL!!!!!!!!!!!\n");
}
*/
if  ((a_root->lt != NULL) || (a_root->rt != NULL)) {
    if (a_root->lt != NULL) {
        levo=1;
        step2++;
        printf ("a_root->lt!=NULL\n");
            if (a_root->rt != NULL) {
                pravo=1;            
                printf ("a_root->rt!=NULL\n");    
            }
    } 
    else {
         pravo=1;
         step2++;
         printf ("rt est, a lt net --------- +1\n");
    }
}    
else {
    printf ("return 0\n");
    return 0;
}
if (pravo==1) {
    stependva (a_root->rt);
}
if (levo==1) {
    stependva (a_root->lt);
}
}

И ЕЩЕ ВОПРОС) Как удалить элемент из дерева вообще, я пишу в функции удаления,что a_root = NULL, тм все правильно работает,проверенно тем,что заменил a_root = NULL на a_root->data = 0,
но a_root = NULL почему-то не пашет,есть идея тупо удалить ссылку на этот элемент,но как-то не очень,помогите хоть с чем-то пожалуйста,заранее мега огромное спасибо!

Добавлено через 12 часов 18 минут
Ну дайте хотя бы совет по второму вопросу,там не надо вникать)
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.03.2010, 14:54
Ответы с готовыми решениями:

Функция подсчета слов в строке
Необходимо составить функцию, вычисляющую кол-во слов в строке. Слово-подстрока без пробелов. Слова...

Не работает функция подсчета введенных символов
Моя функция выводит не то количество символов. Помогите разобраться. int dlina(char*s1) { int...

Функция для подсчета чисел в массиве
Помогите с вычислением количества одинаковых цифр в двухмерном массиве #include <stdio.h>...

Функция обхода бинарного дерева по уровням
Ребят, не могу написать программу: " Функция обхода бинарного дерева, по уровням". Знаю что там...

Функция построения дерева поиска из файла
Cколько не пытаюсь - не получается:cry: #include <stdio.h> #include <stdlib.h> typedef struct...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.03.2010, 14:54

Функция подсчета четных элементов бинарного дерева
Требуется написать функцию подсчета количества четных узлов бинарного дерева

В чём ошибка проги для подсчета уравнения 4ой степени
uses crt; function F( q,w,t,r,x,f:real):real; begin Write ( 'Введите значение коэфицентов...

Составить подпрограмму подсчета листьев бинарного дерева
Помогите составить подпрограмму подсчета листьев бинарного дерева.


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

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

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