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

Вставка элемента в дерево - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Ошибка в правильности команды... http://www.cyberforum.ru/cpp-beginners/thread203600.html
В понедельник нужно будет показать правильность работы проги... Ошибку пишет тут (декларатион синтаксис еррор ) " bool smezh(edge q1,edge q2){ // 1 - если q1 и q2 смежны, иначе -0 " ...
C++ Как сделать, чтобы не зацикливалось? Добрый вечер. Даны две функции у1 и у2. распечатывать значения функции, пока не будет достигнуто пересечение графиков #include <iostream> #include <cmath> using namespace std; int main(){... http://www.cyberforum.ru/cpp-beginners/thread203598.html
Почему зацикливается??? C++
Доброе время суток. Прошу объяснить или дать ссылку где такое описывается. #include <iostream> using namespace std; int main(){ double const h=0.01; double x; x=2.0; do{ cout<<x<<"\n";
C++ Подсчитать сумму кодов символов каждого слова
Срочно нужно решить задачу! Пожалуйста, помогите, кто как может! Задачу нужно писать на C и, желательно, как можно проще для понимания). Ввести матрицу. Элементы матрицы - строки. Подсчитать сумму...
C++ библиографический поиск http://www.cyberforum.ru/cpp-beginners/thread203581.html
есть файл со списком назвваний книг и статей. прогамма должна читать ключевые слова и определят, находятся ли соответствующие им названия книг и статей в списке. названия, содержащие ключевые слова,...
C++ пирамидальная сортировка(плз ответы нужно) пирамидальная сортировка(плз ответы нужно) и // :wall: #include <iostream.h> #include <string.h> #include <conio.h> #include <stdlib.h> int x; подробнее

Показать сообщение отдельно
Aye Aye
367 / 281 / 36
Регистрация: 17.12.2009
Сообщений: 567
06.12.2010, 03:38
std::string можно сравнивать операторами >, <, ==, !=.
дерево должно быть бинарным.
вовремя вставки необходимо сравнивать данные (str) узла и вставляемую строку (newvalue) оператором <, и если вставляемое больше то вставлять в левое поддерево, меньше - в правое.
для этого надо будет переопределить node
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
struct node{
    std::string str;
    node *left, *right; // левое, правое поддеревья.
    node(const std::string& s):str(s),left(NULL),rigth(NULL) {}
};
void push(node *&t,std::string newvalue) {
    if (t != NULL) {
       if (newvalue < t->str) push(t->left, newvalue);
       else if (newvalue > t->str) push(t->right, newvalue);
       else std::cout << "Такое значение уже содержится в дереве.\n";
    } else {
       t = new node(newvalue);
    }
}
// использование
node *tree = NULL;
push(tree,"g");
push(tree,"r");
push(tree,"c");
push(tree,"b");
push(tree,"h");
push(tree,"a");
push(tree,"i");
типа того
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru