编程语言
首页 > 编程语言> > java-在二叉树中查找同构性质的算法

java-在二叉树中查找同构性质的算法

作者:互联网

检查两个二叉树本质上是同构的算法是什么?
我的代码-

boolean isIsomorphic(Root t1 , Root t2){
    if(t1==null || t2==null){
        return false;
    }

    if((t1.value == t2.value) && (isIsomorphic(t1.left,t2.right) && isIsomorphic(t1.right,t2.left))) {
        return true
    }

    return false; 
}

解决方法:

wikipedia article for ‘isomorphism’说:“如果两个对象是同构的,那么由同构保留的并且其中一个对象为真的任何属性也对另一个对象也为真”.

因此,您的问题需要说明您是否关心形状,数据,性能等.

如果您关心用于搜索的二叉树的行为,则您的算法不正确.参见What does it mean for two binary trees to be isomorphic?

检查同构的最简单方法是对两棵树进行有序遍历,并在每个步骤之后检查其值.

另一方面,如果您关心形状和数据,则@amits修复程序将为您提供帮助.但请注意,您最好将其称为完全匹配.

最后,如果您只关心形状,则需要删除支票t1.value == t2.value

标签:data-structures,binary-tree,java,algorithm
来源: https://codeday.me/bug/20191201/2080549.html