struct node
{
int Key;
int Count;
node *Left;
node *Right;
};
void Search (int x, node **p)
// Поиск вершины с ключом x в дереве со вставкой
// (рекурсивный алгоритм).
// *p - указатель на корень дерева.
{
if (*p==NULL)
{ // Вершины с ключом x в дереве нет; включить ее.
*p = new(node);(**p).Key = x; (**p).Count = 1;
(**p).Left = (**p).Right = NULL;
}
else //Поиск места включения вершины.
if (x<(**p).Key) //Включение в левое поддерево.
Search (x,&((**p).Left));
else if (x>(**p).Key) //Включение в правое поддерево.
Search (x,&((**p).Right));
else (**p).Count = (**p).Count + 1;
}
int main ()
{
node **Tree;
*Tree = NULL; // Построено пустое бинарное дерево.
int el;
cin>>el;
while (el!=0)
{ Search (el,Tree); cin>>el;}
}
Бинарное дерево, вставка элементов
warning C4700: uninitialized local variable 'Tree' used
А как его еще проинициализировать?
Код:
и вообще, кто разрешил *Tree = NULL; делать?
ой, или тут С. тогда не 0 а NULL
Цитата: Zzema
node **Tree;
*Tree = NULL; // Построено пустое бинарное дерево.
Так делать нельзя. Почитайте про указатели, как под них выделяется память, и что значит их разименовывать. )