检查两棵树是否相同

时间:2012-04-21 10:59:34

标签: algorithm bioinformatics phylogeny

以下是同一树的三个等价表示(系统发育)。我试图找出一种算法来检查两个树表示是否相等。 如果节点之间的父子关系相似,则树被定义为等效。

(Whale,(Seal,((Mouse,Rat),((((Carp,Loach),Frog),Chicken),Human))),Cow);
(Whale,(Seal,((Rat,Mouse),(Human,((Frog,(Loach,Carp)),Chicken)))),Cow);
((Seal,((Rat,Mouse),(Human,((Frog,(Loach,Carp)),Chicken)))), Cow, Whale);

有人可以推荐一种方法吗?

3 个答案:

答案 0 :(得分:8)

一种方法是按字典顺序(或任何严格的弱顺序)对孩子进行比较。

答案 1 :(得分:0)

您可以将每个边写两次 - 一次为(a,b),一次为(b,a),两棵树都可以。例如,为(Mouse,Rat)生成两个字符串:“Mouse:Rat”和“Rat:Mouse”然后写下所有这些字符串,按字典顺序对它们进行排序并比较两个列表。如果它们相同则树木相似。这与Andrew Tomazos的解决方案不同,因为它会说树与其自身相似,从底部到顶部,即它支持边缘反转。

答案 2 :(得分:0)

检查两棵树的顺序和后序遍历。如果它们相同则那两棵树是相同的