Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Итерационный метод удаления бинарного дерева - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Модульное произведение графов http://www.cyberforum.ru/cpp-beginners/thread549394.html
Здравствуйте. Мне нужно реализовать модульное произведение графов http://www.fotohost.by/pic_b/12/04/15/065d8c3246f877ac30bde0c8e859b7d8.PNG Но я не знаю, как перемножать графы.
C++ Классы Всем привет! Очень прошу помочь написать программу на классы, для меня это нереально сложное задание, надеюсь на вас - не оставьте в беде, откликнитесь пожалуйста! Условие задания такого: Описать... http://www.cyberforum.ru/cpp-beginners/thread549386.html
C++ Чтение структуры из файла
Добрый день. Пытаюсь считать структуру из файла в структуру(идентичную структуре файла) получается такой код: #include <stdio.h> #include <iostream> struct tbook { double y; double x;
C++ Задача по строкам
Вводиться строка, необходимо вывести на экран все слова нечетной длинны, в которых не содержится повторяющихся букв пример, вводим "привет большое вам спасибо" вывести должен "вам" начал делать,...
C++ Блок схема : посчитать сумму элементов выше главной диагонали матрицы 5х5. http://www.cyberforum.ru/cpp-beginners/thread549343.html
Помогите плизз составить блок схему к задаче. Посчитать сумму элементов выше главной диагонали матрицы 5х5.
C++ правильно ли проверка на то, что поиск пуст? вот часть кода: ... proc = strstr(proc, slovo); if(proc == NULL) { log << "proc is NULL\n"; break; } ... подробнее

Показать сообщение отдельно
alan_parker
0 / 0 / 0
Регистрация: 17.12.2011
Сообщений: 17

Итерационный метод удаления бинарного дерева - C++

15.04.2012, 22:42. Просмотров 884. Ответов 2
Метки (Все метки)

Есть бинарное дерево поиска нужно создать итерационный метод удаления дерева. Вот есть функция удаления дерева но при удалении происходит ошибка вот такая: Необработанное исключение в "0x64bd12b4" в "Derevo.exe": 0xC0000005: Нарушение прав доступа при чтении "0xfeeefee8".
и указивает на free(node->left);

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
typedef struct tag_tree{
    int info;
    struct tag_tree *left, *right;
}TREE;
 
void FreeNodeMemo(TREE *node);
 
int TreeHeight(TREE *root)
{
    int lh,rh;
    if(root == NULL) return 0;
    lh = TreeHeight(root->left);
    rh = TreeHeight(root->right);
    return lh>rh ? lh+1: rh+1;
}
 
 
void FreeNodeMemo(TREE *node)
{
    free(node->left);
    free(node->right);
    free(node); 
}
 
 
 
void DeleteAllNodes(TREE *root)
{
    
    TREE **stack;
    stack = (TREE**)malloc(TreeHeight(root)*sizeof(TREE*));
    int st=NULL;
    TREE *node = root, *pnext;
    while(node != NULL){
        if(node->left != NULL){
            pnext = node->left;
            if(node->right != NULL)
                stack[st++] = node->right;
        }else
            if(node->right != NULL)
                pnext = node->right;
            else
                pnext = stack[st--];
        FreeNodeMemo(node);
        node = pnext;
        
        
    }
}
Помогите пожадуйста исправить ошибку.Спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru