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