Реферат: Динамические структуры данных: двоичные деревья
else vsp=vsp->L;
else
if (!vsp->R) {vsp->R=A; vsp=A->R;}
else vsp=vsp->R;
}
}
return T;
}
/* Рекурсивный вариант добавления элемента в дерево, C++ */
BinTree* InsRec(BinTree *Tree, BT x)
{
if (!Tree) {Tree = (BinTree *) malloc(sizeof(BinTree));
Tree->inf=x; Tree->L=0; Tree->R=0;
}
else if (x < Tree->inf) Tree->L=InsRec(Tree->L, x);
else Tree->R=InsRec(Tree->R, x);
return Tree;
}
Существует несколько способов обхода (прохождения) всех узлов дерева. Три наиболее часто используемых из них называются обход в прямом (префиксном) порядке, обход в обратном (постфиксном) порядке и обход во внутреннем порядке (или симметричный обход). Каждый из обходов реализуется с использованием рекурсии.
Ниже приведены подпрограммы печати элементов дерева с использованием обхода двоичного дерева поиска в обратном порядке.
{Turbo Pascal}
Procedure PrintTree(T : U);
begin
if T <> Nil
then begin PrintTree(T^.L); write(T^.inf : 6); PrintTree(T^.R) end;
end;
// C++
void PrintTree(BinTree *T)
{