С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
alan_parker
0 / 0 / 0
Регистрация: 17.12.2011
Сообщений: 17
#1

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

15.04.2012, 22:42. Просмотров 918. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.04.2012, 22:42
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Итерационный метод удаления бинарного дерева (C++):

Удаления узла из бинарного дерева поиска - C++
Уже довольно много времени убил на эту задачу, теорию понимаю, на практике реализовать никак не получается. Помогите пожалуйста написать...

Функция удаления листа (или ветки) бинарного дерева - C++
Здравствуйте программисты! Учусь на первом курсе. Возникли проблемы с разработкой функции удаления ветки листа или корня из дерева. Т.е....

Метод адресирования элементов бинарного дерева. Что значит? - C++
Добрый вечер. В задании сказано построить структуру-бинарное дерево и т.д. И разработать метод адресирования элементов бинарного дерева....

Дополнить класс, включив метод подсчета числа узлов заданного бинарного дерева - C++
Изучить приведенный пример реализации класса «Дерево двоичного поиска», для которого реализованы следующие схемы обхода бинарного дерева: ...

Запись бинарного дерева в файл и восстановление из него этого дерева - C++
Задача такая: есть бинарное дерево. Каждый элемент дерева содержит 3 указателя - 1 указатель на структуру с данными, 2 и 3й указатель на...

Написать шаблон бинарного дерева с функцией распечатки дерева - C++
Не понимаю, что от меня хотят. Дано такое задание: Написать шаблон бинарного дерева с функцией распечатки дерева *(+(d,e),c) в виде...

2
panicwassano
592 / 560 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
16.04.2012, 01:09 #2
упс не заметил, что без рекурсии
0
alan_parker
0 / 0 / 0
Регистрация: 17.12.2011
Сообщений: 17
16.04.2012, 11:28  [ТС] #3
рекурсивное удаления не походит так как удаляю в дереве 10000 елементов.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.04.2012, 11:28
Привет! Вот еще темы с ответами:

Построение бинарного дерева на основе не бинарного - C++
В лабораторной работе есть такое задание: Создайте процедуру построения бинарного дерева на основе не бинарного. Объясните как вообще...

Создание бинарного дерева из бинарного файла - C++
struct Bin { string name; string city; int players; int score; }; void ReadFromBin(Point*& Tree) { Bin q;

Исследовать итерационный метод- метод касательных для решения нелинейных уравнений - C++
прочитал много всего , но сам пример реализовать никак не могу , кто может помогите F(x) = x5+5x+1=0 с...

Итерационный метод - C++
Помогите найти ошибку в алгоритме. Ошибка в итоге выливается том что при подсчёте невязки, она не уменьшается, а увеличивается. Матрицу 4x4...


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

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

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