Помощь - Поиск - Пользователи - Календарь
Полная версия: функция для определения одинаковых элементов в дереве
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
123456789igor
Надо решить вот такую задачку:
описать логическую функцию same(t), определяющую, есть ли в дереве T хотя бы два одинаковых элемента. Дерево бинарное.
Вот кое-что нашёл. Помогите это всё объединить в нормальную работающюю программу.
{ поиск элемента в дереве }
function Same(root:TreePointer;key:DataItem):boolean;
begin
Same:=false;
if root<>nil then
begin
while (root^.data<>key) and (root<>nil) do
begin
if key<root^.data then
root:= root^.left
else
root := root^.right;
end;
end;
if root=nil then
exit;
if root^.left<>nil then
if root^.left^.data=key then
Same := true;
if root^.right<>nil then
if root^.right^.data=key then
Same:=true;
end; { конец функции поиска элемента }



вот примерное описание типов TreePointer и DataItem:

type
DataItem=integer;
TreePointer = ^tree;
tree = record
data: DataItem;
left: TreePointer;
right:TreePointer;
end;

123456789igor
Прошу ВАС, помогите....
andriano
Во-первых, есть подозрение, что в данном дереве в принципе не может быть двух одинаковых элементов. Следовательно, искать нечего. Но, чтобы быть уверенным в этом, нужен алгоритм построения дерева.
Во-вторых, то, что описано словами, совершенно не совпадает с тем, что написано в коде. Чему верить?
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.