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

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

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.05.2011, 20:05   #1
SkyArcher
Новичок
Джуниор
 
Регистрация: 20.02.2011
Сообщений: 2
По умолчанию Двоичное дерево поиска

Приветствую. Вот есть у меня двоичное дерево поиска в которое я запихиваю класс.
Код:
 public class TreeBeta
    {
        private Drugs value;
        private int count;
        private TreeBeta left;
        private TreeBeta right;

        public TreeBeta()
        {
            left = right = null;
        }

        public void Insert(Drugs value)
        {
            if (this.value == null)
                this.value = value;
            else
            {
                if (this.value.Name.CompareTo(value.Name) == 1)
                {
                    if (left == null)
                        this.left = new TreeBeta();
                    left.Insert(value);
                }
                else if (this.value.Name.CompareTo(value.Name) == -1)
                {
                    if (right == null)
                        this.right = new TreeBeta();
                    right.Insert(value);
                }
                else
                    throw new Exception("Узел уже существует");
            }

            this.count = Recount(this);
        }

        public TreeBeta Search(Drugs value)
        {
            if (this.value == value)
                return this;
            else if (this.value.Name.CompareTo(value.Name) == 1)
            {
                if (left != null)
                    return this.left.Search(value);
                else
                    throw new Exception("Искомого узла в дереве нет");
            }
            else
            {
                if (right != null)
                    return this.right.Search(value);
                else
                    throw new Exception("Искомого узла в дереве нет");
            }
        }
  
        private int Recount(TreeBeta t)
        {
            int count = 0;

            if (t.left != null)
                count += Recount(t.left);

            count++;

            if (t.right != null)
                count += Recount(t.right);

            return count;
        }
    }
Далее в программе я вызываю и запихивю в него класс. Далее мне нужно, когда я поиск произвел в нем(по полю name), если найдено то вырвать из дерева это значение и вывести на экран. Не совсем получается это сделать, т.к. не понимаю как. Так же если не сложно, объясните, как сделать удаление узла из дерева. Спасибо!
SkyArcher вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Двоичное дерево поиска в С++ Madara88 C++ Builder 0 14.04.2011 09:33
Двоичное дерево поиска Madara88 Помощь студентам 0 14.04.2011 09:29
Двоичное дерево поиска, количество элементов на каждом уровне Kayot027 Помощь студентам 2 22.01.2011 13:49
Двоичное дерево (С++) Dead Romantic Помощь студентам 0 30.05.2010 23:52
Двоичное дерево поиска структур lioshenka Общие вопросы C/C++ 3 15.08.2009 12:18