检查两棵树是否相同

May*_*rni 3 java recursion stack

我已经制作了自己的Tree类,并且我试图检查两棵树是否相同.但这里的问题是我正在使用这个电话:

Tree myTree = new Tree();
Tree mySecondTree = new Tree();
myTree.isIdentical(myTree, mySecondTree);
Run Code Online (Sandbox Code Playgroud)

以这种方式传递它有点奇怪,我想通过这种方式传递它:

myTree.isIdentical(mySecondTree);
Run Code Online (Sandbox Code Playgroud)

isIdentical function :

class Tree<T>{
    T data;
    Tree left;
    Tree right;
    Tree(T data){
        this.data = data;
    }

    public boolean isIdentical(Tree t1, Tree t2){
        if(t1 == t2)
            return true;
        if(t1==null || t2==null)
            return false;
        return (
            (t1.data == t2.data) &&
            (isIdentical(t1.left, t2.left)) &&
            (isIdentical(t1.right, t2.right))
        );

    }
}
Run Code Online (Sandbox Code Playgroud)

我尝试使用Stack,但我有点坚持这个

Pou*_*kar 5

因为你想以这种方式执行它

myTree.isIdentical(mySecondTree);
Run Code Online (Sandbox Code Playgroud)

你可以做到这一点

    public boolean isIdentical(Tree t2){
       Tree t1 = this;
       return isIdentical(t1, t2);
    }

    private boolean isIdentical(Tree t1, Tree t2){
    if(t1 == t2)
        return true;
    if(t1==null || t2==null)
        return false;
    return (
        (t1.data == t2.data) &&
        (isIdentical(t1.left, t2.left)) &&
        (isIdentical(t1.right, t2.right))
    );

}
Run Code Online (Sandbox Code Playgroud)