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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.09.2020, 20:38   #1
sesitos040387s
Пользователь
 
Аватар для sesitos040387s
 
Регистрация: 21.11.2019
Сообщений: 18
По умолчанию Шаблонное бинарное дерево

здравствуйте,посоветуйте или напишите пожалуйста (код пример) по такой задаче
(необходимо реализовать шаблонное бинарное дерево по коду ниже).
Код:
#include "Tree.h"
 
Tree::Tree()
{
    root = nullptr;
}
 
Tree::~Tree()
{
    Del();
}
 
void Tree::Print(Elem* Node)
{
    if (Node != nullptr) {
        Print(Node->left);
        std::cout << Node->var << ' ';
        Print(Node->right);
    }
}
 
Elem* Tree::Search(Elem* Node, int var)
{
    while (Node != nullptr && Node->var != var) {
        if (var < Node->var)
            Node = Node->left;
        else
            Node = Node->right;
    }
    return Node;
}
 
Elem* Tree::Min(Elem* Node)
{
    if (Node != nullptr)
        while (Node->left != nullptr)
            Node = Node->left;
    return Node;
}
 
Elem* Tree::Max(Elem* Node)
{
    if (Node != nullptr)
        while (Node->right != nullptr)
            Node = Node->right;
    return Node;
}
 
Elem* Tree::Previous(Elem* Node)
{
    Elem* y = nullptr;
    if (Node != nullptr) {
        if (Node->left != nullptr)
            return Max(Node->left);
        y = Node->parent;
        while (y != nullptr && Node == y->left)
        {
            Node = y;
            y = y->parent;
        }
    }
    return y;
}
 
Elem* Tree::Next(Elem* Node)
{
    Elem* y = nullptr;
    if (Node != nullptr) {
        if (Node->right != nullptr)
            return Max(Node->right);
        y = Node->parent;
        while (y != nullptr && Node == y->right)
        {
            Node = y;
            y = y->parent;
        }
    }
    return y;
    
}
 
void Tree::Insert(Elem* in)
{
    in->left = nullptr;
    in->right = nullptr;
 
    Elem* y = nullptr;
    Elem* Node = nullptr;
 
    while (Node != nullptr) {
        y = Node;
        if (in->var < Node->var)
            Node = Node->left;
        else
            Node = Node->right;
    }
    in->parent = y;
    if (y == nullptr)
        root = in;
    else if (in->var < y->var)
        y->left = in;
    else
        y->right = in;
}
 
void Tree::Insert(int i)
{
    Elem* in = new Elem;
    in->var = i;
    in->left = nullptr;
    in->right = nullptr;
 
    Elem* y = nullptr;
    Elem* Node = root;
 
    while (Node != nullptr) {
        y = Node;
        if (in->var < Node->var)
            Node = Node->left;
        else
            Node = Node->right;
    }
    in->parent = y;
    if (y == nullptr)
        root = in;
    else if (in->var < y->var)
        y->left = in;
    else
        y->right = in;
}
 
void Tree::Del(Elem* del_el)
{
}
 
Elem* Tree::GetRoot()
{
    return root;
}
sesitos040387s вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Бинарное дерево Zaraaa Помощь студентам 6 05.03.2014 21:40
Бинарное дерево С++ Tclass Общие вопросы C/C++ 10 06.06.2013 09:27
Бинарное дерево JonnyFletcher Помощь студентам 0 20.05.2013 03:06
бинарное дерево на C++ gulec Помощь студентам 0 08.05.2013 19:39
бинарное дерево СИ Anastasia.K Помощь студентам 0 31.10.2009 18:16