Особенности структуры и функционирования двоичного дерева поиска с «барьером»
5
struct Tree
{
int data;
Tree *leftChild;
Tree *rightChild;
}*top;
Tree *AddElement(Tree *top, int n)
{
if (top == NULL)
{
top = new Tree;
top->data = n;
top->leftChild = NULL;
top->rightChild = NULL;
}
else
if ((top->leftChild == NULL) && (top-
>rightChild == NULL))
{
top->leftChild = new Tree;
top->leftChild->data = top->data;
top->leftChild->leftChild = NULL;
top->leftChild->rightChild = NULL;
top->rightChild = new Tree;
top->rightChild->data = top->data;
top->rightChild->rightChild = NULL;
top->rightChild->leftChild = NULL;
top->data = n;
}
else
{
if (n < top->data)
top->leftChild = AddElement(top-
>leftChild, n);
else
top->rightChild = AddElement(top-
>rightChild, n);
}
return top;
}
В ходе реализации алгоритма поиска в двоичном дереве поиска с
«барьером» возврата NULL никогда не будет:
Tree *FindElement(Tree *top, int n, int stop)
{
if (top->data == stop)
return top;
if (top->data == n)
return top;