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

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

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

Нерекурсивный симметричный обход бинарного дерева в глубину - C++

22.07.2016, 08:26. Просмотров 305. Ответов 0

Дана задача, написать нерекурсивную программу, печатающую все вершины двоичного дерева, с использованием стека отложенных заданий.
Само дерево находится в файле в формате m [e [c [a], g [k] ], s [p [o, s], y] ]
Программа практически готова, но выдает ошибки, которые не выходит исправить, так же прошу показать, как считать этот файл в программу. Заранее спасибо, очень надеюсь на вашу помощь

C++ (Qt)
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#include "stdafx.h"
#include <stdlib.h>
#include <stdio.h>
#include <stack>
#include <iostream>
#define STACK_INIT_SIZE 100
 
using namespace std;
 
struct Node
{
    int data;
    Node *left, *right;
};
 
typedef struct Stack {
    size_t size;
    size_t limit;
    Node **data;
} Stack;
 
Stack* createStack() {
    Stack *tmp = (Stack*)malloc(sizeof(Stack));
    tmp->limit = STACK_INIT_SIZE;
    tmp->size = 0;
    tmp->data = (Node**)malloc(tmp->limit * sizeof(Node*));
    return tmp;
}
 
void freeStack(Stack **s) {
    free((*s)->data);
    free(*s);
    *s = NULL;
}
 
void push(Stack *s, Node *item) {
    if (s->size >= s->limit) {
        s->limit *= 2;
        s->data = (Node**)realloc(s->data, s->limit * sizeof(Node*));
    }
    s->data[s->size++] = item;
}
 
Node* pop(Stack *s) {
    if (s->size == 0) {
        exit(7);
    }
    s->size--;
    return s->data[s->size];
}
 
Node* peek(Stack *s) {
    return s->data[s->size - 1];
}
//
//
void iterInorder(Node *root) {
    Stack *ps = createStack();
    while (ps->size != 0 || root != NULL) {
        if (root != NULL) {
            push(ps, root);
            root = root->left;
        }
        else {
            root = pop(ps);
            printf("visited %d\n", root->data);
            root = root->right;
        }
    }
    freeStack(&ps);
}
//
Нерекурсивный симметричный обход бинарного дерева в глубину
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.07.2016, 08:26
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Нерекурсивный симметричный обход бинарного дерева в глубину (C++):

НЕрекурсивный обход бинарного дерева - C++
уважаемые программисты! нужно написать алгоритм обхода бинарного дерева без использования рекурсии, а с помощью стека. Проверить на...

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

Нерекурсивный прямой обход BST дерева - C++
Дайте пожалуйста пример реализации НЕрекурсивного прямого обхода дерева

Хитрый обход дерева в глубину - C++
По условию необходимо обойти дерево так чтобы найти путь max длины не имеющий кратных вершин, приэтом советуют пользоваться алгоритмом с...

Обход бинарного дерева - C++
может есть у кого такой пример или похожий??или часть какая нибудь?

Обход Бинарного дерева - C++
Задача: написать функцию, помощью которой можно получить n-тый элемент бинарного дерева по возрастанию. в узлах хранятся целые числа. ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.07.2016, 08:26
Привет! Вот еще темы с ответами:

Обход бинарного дерева - C++
Прошу Вас, помогите школьнику, незнающему деревья, завтра срочно надо сдать работу, я никак не могу реализовать... 1. В заданном...

Обход бинарного дерева С++ - C++
Нужна помощь! Просмотрел много источников, но так и не нашёл своего ответа...Суть задачи состоит в том что, мне нужно при обходе...

Как осуществлять обход бинарного дерева? - C++
Хочу создать клас бинарное дерево, но не знаю чем это дерево я буду проходить, как двигатса от одного узла к дргому.(без создания...

Обход бинарного дерева без рекурсии - C++
нужно написать алгоритм обхода бинарного дерева без использования рекурсии, а с помощью стека. Проверить на дереве int, но в самом коде...


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

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

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