0 / 1 / 0
Регистрация: 01.11.2020
Сообщений: 613
1

Pushage: рекурсия на всех путях выполнения, функция вызовет переполнение стека

17.04.2021, 11:17. Показов 558. Ответов 8

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
50
51
52
53
54
55
56
57
58
59
60
struct tree {
    int ticket_code;
    int numberofthings;
    string last_name;
    tree* left, * right;
};
    void deleteBinaryTree(tree*& root)
    {
        if (root == nullptr) {
            return;
        }
     
        deleteBinaryTree(root->left);
        deleteBinaryTree(root->right);
     
        delete root;
     
        root = nullptr;
    }
    void Pushage(tree** t, string last_name, int ticket_code, int numberofthings) {
        if ((*t) == NULL){
            (*t) = new tree;
            (*t)->last_name = last_name;
            (*t)->ticket_code = ticket_code;
            (*t)->numberofthings = numberofthings;
            (*t)->left = (*t)->right = NULL;
    }
        if (ticket_code > (*t)->ticket_code) {
            Pushage(&(*t)->right, last_name, ticket_code, numberofthings);
        }
        else {
            Pushage(&(*t)->left, last_name, ticket_code, numberofthings);
        }
    }
    void AgeTree(tree* firstTree, tree** newTree) {
        string last_name;
        int ticket_code;
        int numberofthings;
        if (firstTree) return;
        last_name = firstTree->last_name;
        ticket_code = firstTree->ticket_code;
        numberofthings = firstTree->numberofthings;
        Pushage(newTree, last_name, ticket_code, numberofthings);
        AgeTree(firstTree->left, newTree);
        AgeTree(firstTree->right, newTree);
    }
    int main()
    {
        int n;
        tree* root;
        tree* newTree = NULL;
        
        AgeTree(root, &newTree);
        deleteBinaryTree(root);
        if (root == nullptr) {
            cout << "Tree Successfully Deleted";
        }
        print2DUtil(newTree);
        return 0;
    }
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.04.2021, 11:17
Ответы с готовыми решениями:

Рекурсия на всех путях выполнения, функция вызовет переполнение стека
Возникла проблема с переполнением стека, прошу помочь. Заранее благодарен #include &quot;stdafx.h&quot;...

Рекурсия - переполнение стека
Помогите написать,задание ниже#include &quot;stdafx.h&quot; #include &quot;stdafx.h&quot; #include &lt;stdio.h&gt;...

Последовательность из 3 символов(рекурсия) - переполнение стека
Здравствуйте, пишу первый раз на форум, не судите строго, хотя нет судите) Дана задача:...

Значение возвращается не при всех путях выполнения
Где ошибка? #include &lt;iostream&gt; #include &lt;stdio.h&gt; using namespace std; bool...

8
С чаем беда...
Эксперт CЭксперт С++
9988 / 5341 / 1460
Регистрация: 18.10.2014
Сообщений: 12,839
17.04.2021, 11:19 2
Цитата Сообщение от Andriyipz Посмотреть сообщение
Pushage: рекурсия на всех путях выполнения, функция вызовет переполнение стека
Да, так и написано в коде. То ли else забыли после первого if, то ли return...

В чем ваш вопрос?
0
0 / 1 / 0
Регистрация: 01.11.2020
Сообщений: 613
17.04.2021, 11:23  [ТС] 3
чего оно тогда не выводит это новое дерево?
0
С чаем беда...
Эксперт CЭксперт С++
9988 / 5341 / 1460
Регистрация: 18.10.2014
Сообщений: 12,839
17.04.2021, 11:24 4
Цитата Сообщение от Andriyipz Посмотреть сообщение
чего оно тогда не выводит это новое дерево?
???

Вы же сами уже ответили на этот вопрос:

Цитата Сообщение от Andriyipz Посмотреть сообщение
Pushage: рекурсия на всех путях выполнения, функция вызовет переполнение стека
0
0 / 1 / 0
Регистрация: 01.11.2020
Сообщений: 613
17.04.2021, 11:29  [ТС] 5
и что тогда делать?

Добавлено через 3 минуты
как исправить?
0
0 / 1 / 0
Регистрация: 01.11.2020
Сообщений: 613
17.04.2021, 11:43  [ТС] 6
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
50
51
52
53
54
55
56
57
58
59
60
struct tree {
    int ticket_code;
    int numberofthings;
    string last_name;
    tree* left, * right;
};
    void deleteBinaryTree(tree*& root)
    {
        if (root == nullptr) {
            return;
        }
     
        deleteBinaryTree(root->left);
        deleteBinaryTree(root->right);
     
        delete root;
     
        root = nullptr;
    }
    void Pushage(tree** t, string last_name, int ticket_code, int numberofthings) {
        if ((*t) == NULL){
            (*t) = new tree;
            (*t)->last_name = last_name;
            (*t)->ticket_code = ticket_code;
            (*t)->numberofthings = numberofthings;
            (*t)->left = (*t)->right = NULL;
    }
        if (ticket_code > (*t)->ticket_code) {
            Pushage(&(*t)->right, last_name, ticket_code, numberofthings);
        }
        else {
            Pushage(&(*t)->left, last_name, ticket_code, numberofthings);
        }
    }
    void AgeTree(tree* firstTree, tree** newTree) {
        string last_name;
        int ticket_code;
        int numberofthings;
        if (firstTree) return;
        last_name = firstTree->last_name;
        ticket_code = firstTree->ticket_code;
        numberofthings = firstTree->numberofthings;
        Pushage(newTree, last_name, ticket_code, numberofthings);
        AgeTree(firstTree->left, newTree);
        AgeTree(firstTree->right, newTree);
    }
    int main()
    {
        int n;
        tree* root;
        tree* newTree = NULL;
        
        AgeTree(root, &newTree);
        deleteBinaryTree(root);
        if (root == nullptr) {
            cout << "Tree Successfully Deleted";
        }
        print2DUtil(newTree);
        return 0;
    }
0
0 / 1 / 0
Регистрация: 01.11.2020
Сообщений: 613
17.04.2021, 17:52  [ТС] 7
просто не понимаю чего оно даже в функции не входит
C++
1
AgeTree(root, &newTree);
0
С чаем беда...
Эксперт CЭксперт С++
9988 / 5341 / 1460
Регистрация: 18.10.2014
Сообщений: 12,839
17.04.2021, 17:58 8
Цитата Сообщение от Andriyipz Посмотреть сообщение
просто не понимаю чего оно даже в функции не входит
Вы же уже сами ответили на свой вопрос:

Цитата Сообщение от Andriyipz Посмотреть сообщение
Pushage: рекурсия на всех путях выполнения, функция вызовет переполнение стека
---

Цитата Сообщение от Andriyipz Посмотреть сообщение
как исправить?
Написано открытым тестом в сообщении #2
0
0 / 1 / 0
Регистрация: 01.11.2020
Сообщений: 613
17.04.2021, 18:42  [ТС] 9
то есть вот здесь нужно так сделать?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 void AgeTree(tree* firstTree, tree** newTree) {
        string last_name;
        int ticket_code;
        int numberofthings;
        if (firstTree) return;
else{
        last_name = firstTree->last_name;
        ticket_code = firstTree->ticket_code;
        numberofthings = firstTree->numberofthings;
        Pushage(newTree, last_name, ticket_code, numberofthings);
        AgeTree(firstTree->left, newTree);
        AgeTree(firstTree->right, newTree);
return;
}
    }
Добавлено через 14 минут
сделал return но чего-то все равно не работает
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
void Pushage(tree** t, int ticket_code, int numberofthings,string last_name) {
    if ((*t) == NULL){
        (*t) = new tree;
        (*t)->ticket_code = ticket_code;
        (*t)->numberofthings = numberofthings;
        (*t)->last_name = last_name;
        (*t)->left = (*t)->right = NULL;
        return;
}
    if (ticket_code > (*t)->ticket_code) {
        Pushage(&(*t)->right, ticket_code, numberofthings, last_name);
    }
    else {
        Pushage(&(*t)->left, ticket_code, numberofthings, last_name);
    }
}
void AgeTree(tree* firstTree, tree** newTree) {
    string last_name;
    int ticket_code;
    int numberofthings;
    if (firstTree) return;
        ticket_code = firstTree->ticket_code;
        numberofthings = firstTree->numberofthings;
        last_name = firstTree->last_name;
        Pushage(newTree, ticket_code, numberofthings, last_name);
        AgeTree(firstTree->left, newTree);
        AgeTree(firstTree->right, newTree);
}
Добавлено через 26 минут
Не знаете чего?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.04.2021, 18:42
Помогаю со студенческими работами здесь

Значение возвращается не при всех путях выполнения
Не могу понять, в чем проблема... Функция sum_yesrek вместо значения возвращает -1.#IND ...

Значение возвращается не при всех путях выполнения
Подскажите как исправить предупреждение &quot; GetModuleBaseAddress: Значение возвращается не при всех...

Значение возвращается не при всех путях выполнения
Помогите пожалуйста. Как сделать, чтобы функция возвращала делители? (Через void не получается,...

Рекурсивная функция вычисления факториала: переполнение стека
Учусь работать с рекурсией, но почему то в коде преполнение стека и все программа виснет и вылетает...

Как исправить ошибку "значение возвращается не при всех путях выполнения"? (GUI)
Набросал пример программы для теста. Программа запускается,программа при нажатие на...

Функция remove: удаление всех включений элемента x из стека
реализуйте функцию remove которая удаляет все включения элемента x из стека


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru