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

Любимые бинарные деревья. - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Слово чемпион о_О http://www.cyberforum.ru/cpp-beginners/thread255345.html
Задано некоторое предложение на неизвестном языке. Назовем слово в нем чемпионом, если оно является палиндромом и количество букв в нем максимально. Буквами алфавита в неизвестном языке являются буквы латинского алфавита и арабские цифры. Гарантируется, что других символов, кроме пробелов и знаков препинания в предложении нет. Обьясните пожалуйста как это сделать??? А то я даж условия не...
C++ Ответ на вопрос по С++ определение объединения (union), синтаксис, назначение спасибо http://www.cyberforum.ru/cpp-beginners/thread255275.html
РАбота сдвумя файлами C++
Не буду рассказывать , что и как произошло в проект вот код. Сама задача не важна, тоько взаимодействие ммежду фаиломи. фаил под назв fil2.cpp #include"stdafx.h" class my_class {
C++ Дата и время
Как получить дату в формате yymmddhhmmss ?
C++ Ввод значения символьной переменной http://www.cyberforum.ru/cpp-beginners/thread255266.html
Здравствуйте. Подскажите пожалуйста, как в ЯВУ C осуществить ввод символа. Я пытался это сделать следующим образом: scanf("%c",&ch); собственно предварительно описав переменную ch типа char. Но никакой реакции при выполнении данного оператора. Реализовать ввод удалось только так: scanf("%c",&ch); scanf("%c",&ch); В чём кроется проблема и каким образом её можно устранить ? (я использую...
C++ Циклический сдвиг прямоугольной матрицы на n элементов вправо Подскажите пожалуйста в чем ошибка. Надо осуществить циклический сдвиг прямоугольной матрицы на n элементов вправо. int main() { setlocale( LC_ALL,"Russian" ); int mas, temp, number; cout << "Введите данные массива: "; for (int i=0; i<k; i++)//ввод данных массива { for (int j=0; j<m;j++) подробнее

Показать сообщение отдельно
co6ak
Кошковед
 Аватар для co6ak
402 / 495 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
11.03.2011, 11:46     Любимые бинарные деревья.
Доброго времени суток.
появилась проблема с решением задачи.
собсна задача:
"найти количество отрицательных узлов в левом и правом поддереве и сравнить их."
функция должна быть int-овская. и что-то там все время выводить.
со стеками памяти у меня как видно не лады.
помогите плз.

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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
#include <iostream>;
#include <cstdlib>;
using namespace std;
int n1=0;
int n2=0;
 
struct TREE {
    int info;
    TREE *left;
    TREE *right;
    };
TREE *root = NULL;
int count = 0;
 
void createTree (TREE **current, int n) 
{
    if (n==0) *current=NULL;
    else 
    {   int x;
        int nl=n/2;
        int nr=n-nl-1;
        TREE *tmp = new (TREE) ;
        cout << "\nВведите значение узла \n" ;cin >> x ;
        tmp->info = x;
        count++;
        createTree (&tmp->left, nl);
        createTree (&tmp->right, nr);
        *current=tmp;
    }
}
void ShowSymmetric(TREE *current, int l)
{
    if(current!=NULL)
    {
    ShowSymmetric(current->left, l+1);
    for(int i=0;i<l;i++)
    cout << "\t";
    cout << current->info << endl;
    ShowSymmetric(current->right, l+1);
    }
}
void clearTree(TREE **current)
{
 
    if(*current!=NULL)
    {
    clearTree(&(*current)->left);
    clearTree(&(*current)->right);
    delete *current;
    count--;
    if(count==0)
    *current=NULL;
    }
 
}
void CheckT(TREE *current, int l) 
{
    
    if (current!=NULL)
    { 
        if(int s=current -> info<0) s=1;
        
    }
}
 
void ShowBackSymmetric(TREE *current, int l)
{
 
    if(current!=NULL)
    {
    ShowBackSymmetric(current->right, l+1);
    for(int i=0;i<l;i++)
    cout << "\t";
    cout << current->info << endl;
    ShowBackSymmetric(current->left, l+1);
    }
 
}
int main()
{
 
    setlocale(LC_ALL,"Russian");
    int num;
    char otv;
    do
    {
 
        cout << "1. Построить дерево" << endl
        << "2. Обход в симметричном порядке" << endl
        << "3. Обход в обратно-симметричном порядке" << endl
        << "4. Проверка" << endl 
        << "0. Выход"
        << " = ";
        cin >> otv;
        switch(otv)
        {
        case '1':
 
            cout << endl << "Число вершин дерева = ";
            cin >> num;
            clearTree(&root);
            createTree(&root, num);
            cout << endl << "Дерево создано" << endl;
            break;
 
 
        case '2':
 
            if(root!=NULL)
            {
            ShowSymmetric(root, 0);
            }
            else
            cout << endl << "Дерево пустое" << endl;
            break;
 
        case '3':
 
            if(root!=NULL)
            {
             ShowBackSymmetric(root,0);
            }
            else
            cout << endl << "Дерево пустое" << endl;
            break;
 
 
        case '4':
            if(root!=NULL)
            {
             CheckT(root,0);
            }
            else 
            cout << endl << "Дерево пустое" << endl;
            break;
 
        case '0':
 
            break;
 
        default:
 
            cout << endl << "Ошибка" << endl;
            break;
 
        }
 
    }while(otv!='0');
    cin.get();
 
}
Добавлено через 50 минут
PLEASE, HELP!

через час идти сдавать, а надо еще разобраться где я был дурак >_<
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 17:51. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru