Помощь - Поиск - Пользователи - Календарь
Полная версия: функция для определения одинаковых элементов в дереве
Форум «Всё о Паскале» > 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
Во-первых, есть подозрение, что в данном дереве в принципе не может быть двух одинаковых элементов. Следовательно, искать нечего. Но, чтобы быть уверенным в этом, нужен алгоритм построения дерева.
Во-вторых, то, что описано словами, совершенно не совпадает с тем, что написано в коде. Чему верить?
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.