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

Бинарные деревья - C++

Восстановить пароль Регистрация
 
WinCroff
-13 / 0 / 0
Регистрация: 02.05.2012
Сообщений: 20
01.12.2012, 17:30     Бинарные деревья #1
В листьях бинарного дерева указаны идентификаторы переменных, в других
вершинах - знаки арифметических операций или функций SIN, COS, TG, CTG, LOG, EXP.
Возможны одноместные операции типа '+' или '-'. В этом случае требуется только один
операнд. Значения переменных известны. Проверить синтаксическую правильность
идентификаторов. Выдать на экран выражение в инфиксной форме со скобками. Определить
значение выражения.
Пример: ( (-( ((a1*bar) +c) )- (((SIN (dors) )-e) )) ).

Подскажите как доделать код?

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
#include <iostream>
#include <conio.h>
 
using namespace std;
 
struct node
{
    int data; //Информационное поле
    node *left, *right;//Левая и Правая часть дерева
};
 
node * tree=NULL; //Объявляем переменную, тип которой структура Дерево
 
/*ФУНКЦИЯ ЗАПИСИ ЭЛЕМЕНТА В БИНАРНОЕ ДЕРЕВО*/
void push(int a,node **t)
{
    if ((*t)==NULL) //Если дерева не существует
    {
        (*t)=new node; //Выделяем память
        (*t)->data=a; //Кладем в выделенное место аргумент a
        (*t)->left=(*t)->right=NULL; //Очищаем память для следующего роста
        return; //Заложили семечко, выходим
    }
       //Дерево есть
        if (a>(*t)->data) push(a,&(*t)->right); //Если аргумент а больше чем текущий элемент, кладем его вправо
        else push(a,&(*t)->left); //Иначе кладем его влево
}
 
/*ФУНКЦИЯ ОТОБРАЖЕНИЯ ДЕРЕВА НА ЭКРАНЕ*/
void print (node *t,int u) 
{
    if (t==NULL) return; //Если дерево пустое, то отображать нечего, выходим
    else 
    {
    print(t->left,++u);//С помощью рекурсивного посещаем левое поддерево
    for (int i=0;i<u;++i) cout<<"|";
    cout<<t->data<<endl; //И показываем элемент
    u--;
    }
    print(t->right,++u); //С помощью рекурсии посещаем правое поддерево
}
 
void main ()
{   
    int n; //Количество элементов
    int s; //Число, передаваемое в дерево
    cout<<"Enter number element:  ";
    cin>>n; //Вводим количество элементов
 
    for (int i=0;i<n;++i)
    {
    cout<<"Enter number:  ";
    cin>>s; //Считываем элемент за элементом
   
    push(s,&tree); //И каждый кладем в дерево
    }
    cout<<"Your tree: \n";
    print(tree,0);
    getch();       
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.12.2012, 17:30     Бинарные деревья
Посмотрите здесь:

Бинарные деревья C++
Бинарные деревья C++
C++ Бинарные деревья
C++ бинарные деревья
бинарные деревья C++
Бинарные деревья C++
C++ Бинарные деревья
Бинарные деревья C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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