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

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

Восстановить пароль Регистрация
 
alan_parker
0 / 0 / 0
Регистрация: 17.12.2011
Сообщений: 17
15.04.2012, 22:42     итерационный метод удаления бинарного дерева #1
Есть бинарное дерево поиска нужно создать итерационный метод удаления дерева. Вот есть функция удаления дерева но при удалении происходит ошибка вот такая: Необработанное исключение в "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;
        
        
    }
}
Помогите пожадуйста исправить ошибку.Спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.04.2012, 22:42     итерационный метод удаления бинарного дерева
Посмотрите здесь:

Построение бинарного дерева C++
C++ Обход бинарного дерева
C++ Построение бинарного дерева на основе не бинарного
C++ Вывод бинарного дерева
C++ Удаления узла из бинарного дерева поиска
Максимальное по модулю собственное значение матрицы. Итерационный метод C++
Итерационный метод C++
C++ Функция удаления листа (или ветки) бинарного дерева

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
panicwassano
590 / 558 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
16.04.2012, 01:09     итерационный метод удаления бинарного дерева #2
упс не заметил, что без рекурсии
alan_parker
0 / 0 / 0
Регистрация: 17.12.2011
Сообщений: 17
16.04.2012, 11:28  [ТС]     итерационный метод удаления бинарного дерева #3
рекурсивное удаления не походит так как удаляю в дереве 10000 елементов.
Yandex
Объявления
16.04.2012, 11:28     итерационный метод удаления бинарного дерева
Ответ Создать тему
Опции темы

Текущее время: 04:45. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru