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

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

30.03.2010, 14:54. Просмотров 2118. Ответов 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.03.2010, 14:54
Ответы с готовыми решениями:

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

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

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

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

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.03.2010, 14:54

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

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

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

Определить функцию для подсчёта количества вершин бинарного дерева
Определить функцию для подсчёта количества вершин бинарного дерева значения которых лежат в...

Написать программу для подсчета количества вершин бинарного дерева
Решите, пожалуйста задачу для turboprolog 2.0:"Написать программу для подсчета количества вершин...


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

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

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