Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [C++] Реализация бинарного дерева


Автор: k03tik 3.6.2006, 20:17
 реализовать Бинарное дерево с использованием класса
В качестве типов данных - Строковый тип.
//=================================//
Предусмотреть возможность добавления элементов, удаления элементов. Предусмотреть функции для доступа ко всем элементам и отображения всех элементов на экране.

Вот не могу разобраться как реализовать дерево smile  

Автор: sergejzr 3.6.2006, 21:09
Для домашних заданий, курсовых, существует "Центр Помощи"

Тема перенесена!

Добавлено @ 21:11 
Из с++ 

Автор: MAKCim 3.6.2006, 21:58
Цитата

Вот не могу разобраться как реализовать дерево

Код

template<class Type> struct node
{
    typedef node<Type> node_t;
    Type data_;
    node_t* left_, *right_;
};

template<class Type> class tree
{
private:
    node<Type>* root;
public:
    tree(): root(0) {}
...
};

typedef tree<std::string> binar_string_tree;
 

Автор: k03tik 3.6.2006, 22:57
спс за ето smile ну я понял что нужен корень и указатели на левого и правого сына.... конкретнее я не пойму как реализовать ввод элементов дерева.. циклом или как ещё... (PS:не обижайтесь на нубов ...я пока новичёк) 

Автор: MAKCim 4.6.2006, 08:50
Код

template<class Type> class tree
{
private:
    node<Type>* root;
private:
    node<Type>* make_node(const Type& obj)
        {return new node<Type>(obj);}
public:
    class equal_objects {};

    tree(): root(0) {}

    void add(const Type& obj)
    {
        node<Type>* element=make_node(obj),
            *temp=root, *old=0;
        if (!root) 
        {
            root=element;
            return;
        }
        while (temp)
        {
            old=temp;
            if (temp->data_<obj) temp=temp->right_;
            else if (temp->data_>obj) temp=temp->left_;
            else throw equal_objects;
        }
        if (old->data_>obj) old->left_=element;
        else old_->right_=element;
    }
};

int main()
{
    tree<int> a;
    for (int i=0; i<100; ++i) a.add(i);
    return 0;
}
 

Автор: k03tik 4.6.2006, 14:56
ещё раз пасиб.....кстати ты мне земляк smile я родился в Белорусии (в г.Барановичи)..... smile  

Автор: Death_muse 6.4.2008, 18:49
а можно один вопрос к создателю кода MAKCim: последний выложенный код и есть готовый? или это дополнение к предыдущему?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)