PDA

Показать полную графическую версию : Подсчёт количества узлов поддерева


1988fenix
16-12-2009, 18:56
Народ, помогите пожалуйста, кто может. В общем дано произвольное дихотомическое дерево. Нужно проверить, является ли оно АВЛ-деревом.

Как подсчитать кол-во узлов в левом/правом поддереве? Я метод написал, но он не правильно работает, подскажите пожалуйста, кто может. Язык 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();
}
}




© OSzone.net 2001-2012