Задать вопрос
Zubchick
@Zubchick

Сравнить два дерева

Привет, никак не могу найти описание какого-нибудь алгоритма по сравнению двух деревьев, подскажите пожалуйста
  • Вопрос задан
  • 6831 просмотр
Подписаться 2 Оценить 1 комментарий
Пригласить эксперта
Ответы на вопрос 3
TheHorse
@TheHorse
function compare(tree1, tree2): boolean;
var i : integer;
begin
   result := true;
   if tree1.childCount <> tree2.childCount then
   begin
      result := false;
      exit;
   end;
   for i:= 0 to tree1.childCount - 1 do
   begin
     if tree1.child[i].value <> tree2.child[i].value then
       result := false
     else
       result :=  compare(tree1.child[i], tree2.child[i]);
     if result = false then break;  
   end;
end;
Ответ написан
philpirj
@philpirj
Сначала сравниваете общие признаки — кору, листья/иголки, высота…
Вроде как сессия ещё не скоро?
Несколько алгоритмов тут.
Ответ написан
eliah_lakhin
@eliah_lakhin
Рекомендую посмотреть сюда: stackoverflow.com/questions/523307/semantic-diff-utilities. В особенности на комментарий Ira Baxter.

В качестве собственного варианта могу предложить вам, например, сделать представление дерева в виде списка(просто последовательный обход всех вершин), а потом применить к этому списку обычный diff.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы