Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Подсчёт количества узлов поддерева

440
16 декабря 2009 года
[FENIX]
83 / / 29.01.2007
В общем дано произвольное дихотомическое дерево. Нужно проверить, является ли оно АВЛ-деревом.

Народ, как подсчитать кол-во узлов в левом/правом поддереве? Я метод написал, но он не правильно работает, подскажите пожалуйста, кто может. Язык C#

Код:
//Кол-во узлов в бинарном дереве
public int Count(DTreeNode pointer)
        {
            int c;
 
            if (pointer != null)
                c = Count(pointer.Left) + Count(pointer.Right) + 1;
            else
                c = 0;
 
            return c;
        }


Вызов:

Код:
class Program
    {
        static void Main(string[] args)
        {
            DixotomyTree T = new DixotomyTree();
 
            //К примеру, вставим такие числа
            T.Root = T.Ins(T.Root, 70);
            T.Root = T.Ins(T.Root, 60);
            T.Root = T.Ins(T.Root, 80);
            T.Root = T.Ins(T.Root, 5);
            T.Root = T.Ins(T.Root, 4);
            T.Root = T.Ins(T.Root, 10);
            T.Root = T.Ins(T.Root, 79);
            T.Root = T.Ins(T.Root, 81);
 
 
            Console.WriteLine("В левом поддереве "+T.Count(T.Root.Left)+" Узлов");
            Console.WriteLine("В правом поддереве " + T.Count(T.Root.Right) + " Узлов");
 
            if (Math.Abs(T.Count(T.Root.Left) - T.Count(T.Root.Right)) <= 1)
                Console.Write("АВЛ-дерево!");
            else
                Console.Write("НЕ АВЛ-дерево");
 
            Console.ReadLine();
        }
    }
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог