Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.11.2012, 00:16   #1
WillyWonka
Пользователь
 
Регистрация: 23.09.2012
Сообщений: 12
По умолчанию Динамические структуры. Двоичное дерево.

Здравствуйте. При добавлении в двоичное дерево некоего элемента путем рекурсии, выдает ошибку:
error C2228: выражение слева от ".AddNote" должно представлять класс, структуру или объединение
тип: leaf *
возможно, имеется в виду "->"

Как от нее можно избавится?
код:
Цитата:
struct leaf
{
int data;
leaf *left, *right;
};


class Tree
{
leaf *root;
public:
Tree(){root=NULL;};
void AddNote(int n);
void Print();
};

void Tree::AddNote(int n)
{
if (root==NULL)
{
root=new leaf;
root->right=root->left=NULL;
root->data=n;
}
else
{
if (n<root->data)
root->left.AddNote(n);
else
root->right.AddNote(n);
}
};
WillyWonka вне форума Ответить с цитированием
Старый 22.11.2012, 10:51   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,833
По умолчанию

Ну прочитайте, что вам написал компилятор!!! left, right указатели же.
p51x вне форума Ответить с цитированием
Старый 22.11.2012, 16:52   #3
WillyWonka
Пользователь
 
Регистрация: 23.09.2012
Сообщений: 12
По умолчанию

Не подскажите тогда, как можно это реализовать?
WillyWonka вне форума Ответить с цитированием
Старый 22.11.2012, 17:36   #4
Helloween
Форумчанин
 
Регистрация: 24.04.2012
Сообщений: 300
По умолчанию

root->left->AddNote(n);
else
root->right->AddNote(n);

Проблема в том что у вас совсем тут все не то. В структуре leaf вообще нет AddNote(), а вы его вызываете, хоть так хоть эдак не вызовете.
Помог? Оставляем отзыв =)
Helloween вне форума Ответить с цитированием
Старый 22.11.2012, 18:44   #5
WillyWonka
Пользователь
 
Регистрация: 23.09.2012
Сообщений: 12
По умолчанию

Чуть-чуть подумал и реализовал.

Цитата:
struct leaf
{
int data;
leaf *left, *right;
};


class Tree
{
leaf *root;
void AddNote(int data, leaf *temp);
void Print(leaf *temp);
public:
Tree(){root=NULL;};
void AddNote(int n);
void Print();
};




void Tree::AddNote(int n)
{
if (root!=NULL)
AddNote(n, root);
else
{
root = new leaf;
root->data=n;
root->left=root->right=NULL;
}
};

void Tree::AddNote(int n, leaf *temp)
{
if (n< temp->data)
{
if (temp->left==NULL)
{
temp->left=new leaf;
temp->left->data=n;
temp->left->left=temp->left->right=NULL;
}
else
AddNote(n, temp->left);
}
else
{
if (temp->right==NULL)
{
temp->right=new leaf;
temp->right->data=n;
temp->right->left=temp->right->right=NULL;
}
else
AddNote(n, temp->right);
}
};
WillyWonka вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Двоичное дерево (С++) Dead Romantic Помощь студентам 0 30.05.2010 23:52
Двоичное дерево Jasper92 Общие вопросы C/C++ 1 18.04.2010 13:27
Двоичное дерево на си++ fesked Помощь студентам 0 22.10.2009 23:44
Двоичное дерево afeg Паскаль, Turbo Pascal, PascalABC.NET 0 19.12.2008 14:49