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

Бинарное дерево - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Вывести кусок строки между скобками http://www.cyberforum.ru/cpp-beginners/thread1305612.html
Я нашел программу которая исключает то что внутри скобок, но не могу перевернуть ее так чтобы выводило наоборот, вот код: #include <iostream> #include <conio.h> #include <malloc.h> using namespace std; int main() { char *str=(char*)malloc(128); cin >> str;
C++ Интегралы, площадь заштрихованной области Подскажите , пожалуйста. Даже не знаю с чего начинать. Проинтегрировать на листочке до окончательной формулы не получилось. Пыталась через WolframAlpha - не получилось тоже. http://www.cyberforum.ru/cpp-beginners/thread1305601.html
Удалить из массива все элементы, в записи которых есть заданная цифра C++
дан одномерный массив целых чисел заполненный случайным образом числами из промежутка удалить из него все элементы в записи которых есть заданная цифра. Hапишите полный текст программы пожалуйста. Спасибо
C++ Кусок строки находящийся между скобками
Нужно максимально оптимально вывести кусок строки находящийся между скобками. Просто так я напишу, но нужно именно максимально оптимально. Помогите пожалуйста!
C++ Организовать цикл do/while, который принимает целые числа с клавиатуры и вычитает их из 10000 http://www.cyberforum.ru/cpp-beginners/thread1305583.html
do - while Организовать цикл, который принимает целые числа с клавиатуры и вычитает их из 10000. Окончание цикла - получение отрицательного итога
C++ В массиве найти среднее геометрическое, все элементы с нечетными индексами уменьшить на среднее геометрическое В заданном массиве A1,A2, ... An найти среднее геометрическое, а затем все элементы с нечетными индексами уменьшить на величину среднего геометрического. Указание. Среднее геометрическое вычисляется по формуле: "формула на скрине" подробнее

Показать сообщение отдельно
GetLucky
0 / 0 / 0
Регистрация: 03.09.2014
Сообщений: 87
20.11.2014, 21:13  [ТС]     Бинарное дерево
Кто-то поможет?

Добавлено через 48 минут
Мои наработки. Нужно доработать ввод данных(внести все в структуру), удаление конкретного элемента дерева и вывод сообщения, если элемент дерева конечный(указывает на NULL), вывод дерева как "дерево" (A->B->C)

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
#include <stdio.h>
#include <string.h>
 
typedef int newtp;
struct node
{
    newtp data;
    node *left;
    node *right;
}   *head=NULL;
 
//фукция сравнивания элементов
int compare(newtp a,newtp b)
{
    return (int)a>(int)b?1:(int)a==(int)b?0:-1;
}
 
//добавить узел в дерево
void add(node *&t,newtp dt)
{
    //создаём уэел и добавляем к концу ветки
    if(t==NULL)
    {
        t=new node;
        t->data=dt;
        t->left=t->right=NULL;
        return ;
    }
    //сравниваем два значения и выбираем к какой ветки добавить к левой или правой
    if(compare(t->data,dt)==1)
    add(t->left,dt);
    else
    add(t->right,dt);
}
 
node* search(node *t,newtp dt)//поиск узла
{
    if(t==NULL) return NULL;// ветка пуста
    if(compare(t->data,dt)==0) return t;
    if(compare(t->data,dt)==1)//сравниваем два значения и выбираем по какой ветки продолжать поиск левой или правой
    search(t->left,dt);
    else
    search(t->right,dt);
}
 
//удалить все элементы из дерева
void clean(node *t)
{
    if(t==NULL)return ;
    clean(t->left);
    delete t;
    clean(t->right);
}
 
//просмотр элементов дерева
void view(node *t)
{
    if(t==NULL)return ;
    view(t->left);
    printf ("Value=%d \n",(int)t->data);
    view(t->right);
}
 
int main(int args,char *argv[])
{
    char command[10];
    int znach;
    while(1)
    {
    printf ("Enter command : \n");
    scanf("%s",command);
        if(strcmp(command,"end")==0)
        {
        printf ("Exit :\n");
        break;
        }
        else if(strcmp(command,"add")==0)//добавить
        {
        printf ("Enter value :\n");
            if(scanf("%d",&znach))
            {
                if(head!=NULL)
                {
                node *t=head;
                add(t,(int)znach);
                }
                else
                add(head,(int)znach);
            }
        }
        else if(strcmp(command,"search")==0)//поиск элемента по значению
        {
        printf ("Enter value :\n");
            if(scanf("%d",&znach))
            {
            node *t=head;
            t=search(t,znach);
                if(t==NULL)//если не найден
                printf ("not found\n");
                else
                printf ("Value=%d\n",(int)t->data);
            }
        }
        else if(strcmp(command,"view")==0)//просмотр
        {
        node *t=head;
        view(t);
        }
        else if(strcmp(command,"clean")==0)//очистить
        {
        clean(head);
        head=NULL;
        printf ("List empty!\n");
        }
        else
        {
        printf ("Unknown command :\n");
        }
 
    }
    clean(head);
    head=NULL;
    return 0;
}
 
Текущее время: 00:14. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru